1.cloud-init介绍及源码解读(上)
2.ipadè½å¤ç¼ç¨åï¼
3.解析WebWxApp代码来增强wechaty功能(一)
4.ç½ç»å·¥ç¨å¸å¦ä½åä¸
cloud-init介绍及源码解读(上)
cloud-init介绍及源码解读(上) cloud-init的源码基本概念 metadata包含服务器信息,如instance id,下载display name等。源码userdata包含文件、下载脚本、源码yaml文件等,下载手机软件源码编写用于系统配置和软件环境配置。源码datasource是下载cloud-init配置数据来源,支持AWS、源码Azure、下载OpenStack等,源码定义统一抽象类接口,下载所有实现都要遵循规范。源码 模块决定定制化工作,下载metadata决定结果。源码jsonobject源码打开cloud-init配置有4个阶段:local、network、config、final。cloud-init支持多种userdata类型,如自定义Python代码、MIME文件等。用户数据类型包括User-Data Script(MIME text/x-shellscript)和Cloud Config Data(MIME text/cloud-config)。 cloud-init支持多种datasource,包括NoCloud、ConfigDrive、OpenNebula等。通过Virtual-Router获取metadata和userdata信息。 cloud-init在云主机上创建目录结构以记录信息。tiff 拆分源码cloud.cfg文件定义各阶段任务。 cloud-init工作原理 cloud-init通过从datasource获取metadata,执行四个阶段任务完成定制化工作。在systemd环境下,这些阶段对应的服务在启动时执行一次。 local阶段从config drive中获取配置信息写入网络接口文件。network阶段完成磁盘格式化、分区、挂载等。config阶段执行配置任务。final阶段系统初始化完成,运行自动化工具如puppet、salt,执行用户定义脚本。spring源码入口 cloud-init使用模块指定任务,metadata决定结果。set_hostname模块根据metadata设置主机名。设置用户初始密码和安装软件是典型应用。 cloud-init源码解读 cloud-init核心代码使用抽象方法实现,遵循接口规范。主要目录包括定义类和函数、网络配置、模块初始化、系统发行版操作、配置文件管理、模块处理、数据源、事件报告等。煜华源码 模块通过handle函数解析cloud config配置,并执行逻辑。数据源类扩展实现接口。handler处理用户数据。reporting框架记录事件信息。 cloud-init提供文件操作、日志管理、配置解析等辅助类。其他文件包括模板处理、日志格式定义、版本控制等。 cloud-init通过模块、datasource和配置文件实现云主机元数据管理和定制化。源码结构清晰,功能全面,是云环境定制的强大工具。ipadè½å¤ç¼ç¨åï¼
iPadä¸æ¯è½å¤è¿è¡ç¼ç¨çï¼å 为å¨å¹´6ææ¥ï¼è¹æå¬å¼WWDCå¼åè 大ä¼ä¸ï¼å´ç»å¼åè 主é¢æ¨åºäºä¸æ¬¾iPadå¹³å°çåºç¨å¼åå·¥å ·Swift Playgroundsï¼ç°å¨å¼åè å¯ä»¥ç´æ¥å¨iPadè¿è¡ç¼ç¨äºãSwift Playgroundsè¿æ¬¾appæ¯ä¸æ¬¾éç¨äºç¼ç¨åå¦è ç iPad appï¼å®è®©ç¨æ·å¯ä»¥ä¸è¾¹å代ç ï¼ä¸è¾¹çå°ä»£ç é å°±çææãå¨å·¦ä¾§è¾å ¥ä»£ç ï¼å¨å³ä¾§ç«å³å°±è½åç°ææã
åæ¶ï¼Swift æ¯ä¸ç§æ°çç¼ç¨è¯è¨ï¼å¯ç¨äºç¼å iOS å macOS åºç¨ï¼å®ç»åäº C å Objective-C çä¼ç¹å¹¶ä¸ä¸åCå ¼å®¹æ§çéå¶ã
æ©å±èµæï¼
Swift ä½ä¸ºä¸ç§å¿«éèé«æçè¯è¨ï¼æçå®èªå·±çç¬ç¹ä¼å¿ï¼Swift å°ç°ä»£ç¼ç¨è¯è¨çç²¾ååè¹æå·¥ç¨å¸æåçæºæ §ç»åäºèµ·æ¥ãç¼è¯å¨å¯¹æ§è½è¿è¡äºä¼åï¼ç¼ç¨è¯è¨å¯¹å¼åè¿è¡äºä¼åï¼ä¸¤è äºä¸å¹²æ°ãSwift æ¢å¯ä»¥ç¨äºå¼åâhello, worldâè¿æ ·çå°ç¨åºï¼ä¹å¯ä»¥ç¨äºå¼åä¸å¥å®æ´çæä½ç³»ç»ã
æ©å¨å¹´æ4æ¥ï¼è¹æå ¬å¸å°±å·²ç»å®£å¸å ¶Swiftç¼ç¨è¯è¨ç°å¨å¼æ¾æºä»£ç ï¼é¿è¾¾å¤é¡µçThe Swift Programming Languageå¯ä»¥å¨çº¿å è´¹ä¸è½½ï¼åæ¶ä¹å¯ä»¥å¨è¹æå®æ¹Githubä¸è½½ã
åèèµææ¥æºï¼ç¾åº¦ç¾ç§-SWIFT ï¼è®¡ç®æºç¼ç¨è¯è¨ï¼
解析WebWxApp代码来增强wechaty功能(一)
通过解析WebWxApp与wechaty代码,成功为wechaty增加新特性,本文回顾了菜鸟如何着手解决github上提出的issue #,即无法使用MediaMessage发送PDF文件,以及陆续提交的多个pr来增强wechaty功能的过程。在这一过程中,阅读WebWxApp及wechaty的源码,了解其功能结构与typescript知识显得尤为重要。
在wechaty V0.8.x版本中,通过阅读webwxapp中相关代码逻辑结构与流程,实现并完善了发送不同文件类型、转发消息以及处理撤回消息等功能。需要注意的是,webwxapp并未对所有事件和信息进行同等处理,某些特性wechaty默认捕捉不到,如RECALLED类型消息,因此必须深入阅读webwxapp源码,梳理其代码流程,找到解决问题的切入点。
wechaty设计采用分层、抽象化封装的方式,其中puppet功能通过浏览器驱动(selenium-webdriver、puppeteer)创建浏览器环境,加载WebWxApp,并通过websocket与wechaty进行通讯。为了操作webWxApp,需要将js代码注入web环境执行,确保操作的同步性。在wechaty中,信息发送会经过一系列步骤,最终在webWxApp与wechaty之间完成。
为了实现发送文件、消息转发、处理撤回消息等功能,需要深入了解wechaty-bro中如何监听webWxApp事件,通过websocket将事件信息发送给puppet-web,以及如何通过浏览器驱动执行js代码以操作webWxApp。例如,在wechaty中发送一条信息时,会按照特定顺序执行一系列操作,涉及获取功能模块、监听事件、执行操作等步骤。
通过分析webWxApp代码,发现messageProcess()方法中对RECALLED事件的处理方式与其他类型信息不同,导致wechaty无法捕捉到此类事件。为解决此问题,可以通过hook t._recalledMsgProcess()方法来获取RECALLED事件信息,分析_recalledMsgProcess()方法,解析撤回信息内容,并通过websocket发送给puppet-web。
最终,通过一系列代码实现,成功解决了无法发送PDF文件、消息转发、处理撤回消息等问题,为wechaty增添了新功能。这一过程不仅加深了对WebWxApp与wechaty代码的理解,也展示了在实际项目中通过阅读和解析代码解决技术难题的重要性。
ç½ç»å·¥ç¨å¸å¦ä½åä¸
ããå¨äºèç½ç浪潮ä¸ï¼äº§åå¨å¿«éå°æ¨éåºæ°ï¼ææ¯å¨ä¸åå°æ¨éåºæ°ï¼å¨è¿ç§å¤§ç¯å¢ä¸ï¼äººå¿è¶äºæµ®èºï¼å¾å¾å¾é¾éä¸å¿ä¸å¿åææ¯ï¼å¯æèå¾ä½å¯å¯ï¼æå®å¾ä½ç¹åã以ä¸æ¯æ为大家æéçç½ç»å·¥ç¨å¸å¦ä½åä¸ç¸å ³ æç« ï¼å¸æå¯¹ä½ ææ帮å©ãããç½ç»å·¥ç¨å¸å¦ä½åä¸ï¼å·¥ç¨å¸çèªæçªç ´
ããæ度å³å®ä¸å
ããæå¥èè¯å«ä½ï¼æ度å³å®ä¸åï¼ä½ çæ度å¦ä½ï¼å¨ä¸å®ç¨åº¦ä¸å·²å³å®ä½ æ¯å¤±è´¥è¿æ¯æåãæè§å¾è¿ç¹å¨åææ¯æ¶ä½ç°å¾æ·æ¼å°½è´ï¼å°±ä»¥Openstack项ç®ä¸ºä¾ï¼å¨å ¶ä¸åç°ä¸ä¸ªbugï¼å ¶å®ä¸æ¯é¾äºãé£ä¹å¨åç°æ个Openstackæå¡çbugæ¶ï¼ä¸åçå·¥ç¨å¸æçä¸åçæ度ï¼æç人éæGoogleä¸ä¸æ¾å°è§£å³ æ¹æ³ ç¶åæ¥ç干活ï¼æç人å°è¯é 读æºç åå»èªè¡ä¿®å¤bugï¼æç人ä¼æå好çbugfixå°è¯æ¨éå°ç¤¾åºçupstreamå»ãæ们é½ä¼ä»¥å·¥ä½å¤ªå¿ä¸ºçç±ï¼åªä»¥é®é¢ç解å³ä½ä¸ºç®ç驱å¨ï¼ä»ä¸å»ç»ç©¶é®é¢çæºå¤´ãå æ¤ï¼è¿å°±å¯¼è´äºè¥å¹²å¹´åï¼æçå·¥ç¨å¸è¿åªå¨åå°è¸æ¥ï¼æçå·²ç»ä¸ä» æ·±å ¥ææ¡æºç ï¼è¿è½å¿«éå°åäºæ¬¡å¼åï¼è¿æç人ä¸ä» å »æäºè¯å¥½ç代ç é£æ ¼ï¼è¿è½ç§¯æå°åä¸å°upstreamçå¼åä¸å»ã
ããè®°å¾å¨åè¿å ¥Sinaäºè®¡ç®é¨é¨çæ¶åï¼å¢éåä½å¹³å°çå¯æ é¢æ¯å·å ç²çä¸è¡æåï¼Develop is not easyãè½ç¶ä¸ç¥éæ¯åªä½å¤§çåçï¼ç´å°ç°å¨æä»ç¶è®°å¿ç¹æ°ãDevelopä¸å çä¹å°æå¼åï¼èæ¯åæ¬äºææçææ¯å²ä½ï¼æ们è¦æ¶å»æ¸ æ°å°è®¤è¯å°æäºæ å好并éæäºãè¿éä¸ä» æææ¯æ¬èº«ï¼è¿æ¶å许å¤ç¸å ³çç»èï¼è¿äºç»è常常被å¤æ°å·¥ç¨å¸å¿½ç¥ï¼èæ£æ¯è¿äºç»èæè½ä½ç°åºä¸ä¸ªå·¥ç¨å¸çéªå ç¹ã
ããæ常使ç¨ä¸å¡ç´ è´¨ä¸è¯æ¥è¯è®ºå·¥ç¨å¸ï¼è¿ä¸ªå·¥ç¨å¸çä¸å¡ç´ è´¨å¾é«ï¼æçæ¯ä»ä¸ä» å¨ä¸ä¸æè½ä¸åºç±»æèï¼æ´éè¦çæ¯å¨åäºä¸é常认çï¼äºæ å·¨ç»ï¼å°å°ä»£ç æ ¼å¼ï¼æ³¨éï¼åéå称ï¼ä»£ç æ交信æ¯ï¼ææ¡£çæ¯ä¸ªç»èé½è½ä½ç°åºè®¤ç两åæå¤ä¹é¾å¾å¯è´µãå¡æ¯åè¿ææ¯çæååºè¯¥é½ä¼ææå ±é¸£ï¼å¹¶ä¸ä»èæµ·ä¸ç«é©¬æµ®ç°åºé£äºéªéªåå ç人åæ¥ã
ããä¿æåªå
ããæä¸æ³å¨åªåè¿ä¸ç¹ä¸ä¸¾ä¾æ¥è¯´æåªåæ¯å¤éè¦çå ç´ ï¼å 为æ们ä»å°å°±å¼å§çè¾åªåçéè¦æ§ãæåªæ³å¼ºè°å¨æ£ç¡®ææ¯çªç ´çéè·¯ä¸ï¼ä½ å¿ é¡»ä¸åå°æ´æ°èªå·±çç¥è¯åæè½ï¼æè½è¶èµ°è¶è¿ã
ããæ认è¯çå¦ä¸ä½æåï¼ç¤¾åºæ ¸å¿å¼åè ï¼æ询é®ä» å£è¯è æç®å»åªéè¿ï¼ä»ç»æçåçæ¯ï¼I'm not going anywhere, just writing codes at home. æ以ï¼é£äºå¤å½å·¥ç¨å¸ä¹æ以å¦æ¤çé¼ï¼å¹¶éä»ä»¬çæ¥å¦æ¤ï¼èæ¯ä»ä»¬çä¸æåªåã
ããæ以请ä¸å®è¦åå°ä¿æè¿ä»½å¹²å²ï¼å¹¶ä¸æ¶ä¸æ¶ä¹°äºå¿çµé¸¡æ±¤æ¿å±ä¸ä¸èªå·±ï¼æè æèç½æ说ï¼æ¶å¿ä¸ä¸èªå·±ï¼ä¿æ大è亢å¥ãç°å¨æèåéåªè¦ä¸æ³å°Emiliençé£å¥“I write puppet codes except eating and sleeping“ï¼å°±å¼å§å¤±ç ï¼è¿é¸¡è¡çåé使å¾æççç©éå延æ¶äºä¸ä¸ªå°æ¶ã
ããå 满çæ
ããå¨æ认è¯çææ¯äººä¸ï¼åå¾åºè²ç人大é½æä¸ä¸ªç¸åç¹ç¹ï¼å¯ææ¿æ ï¼ä»ä»¬æ»ä»¥ä¸ç§ç§¯æ主å¨çæ度å»å¯¹å¾ çæ´»åå·¥ä½ãæç¸ä¿¡ææåå ¥ITè¡ä¸çåå¦ä»¬é½æ¯æ»¡æ对äºæªæ¥çæ§æ¬ï¼åªæ¯è¿ç§å¼¥è¶³çè´µççéå¾å®¹æ被许å¤å¤ççè´é¢å ç´ æ ¢æ ¢ç£¨çï¼å·¥ä½åè°ä¹å³ï¼çæ´»åå太大…ä½ä¸è¦å æ¤å°±æä½ ççæ åèèµ·æ¥ï¼ä¸æ¦ä½ ä¹ æ¯äºåèï¼ä½ å°æ¯ä¸ä¸ªäºæ çæ°ç人ãå¦æä½ å¤±å»äºå¯¹äºè¿½éææ¯ççæï¼é£ä¹å¾é¾å¨ææ¯çéè·¯ä¸ææçªç ´ãæ¿æ ï¼å¨å¾å¤æ¶åï¼å¾å¾è½ç¹çæ们åæ°çæ¬è½ãæäºæ¿æ å°±æäºä¸ç«çå¨åï¼ä½ çå å¿åæ¶ä¹ä¼ååï¼è¶åæä¿¡å¿ï¼å«äººä¹ä¼éæ¸è®¤è¯å°ä½ ä¸ä¼ä¸åçä»·å¼ã
ããåäºæ²é
ããå·¥ç¨å¸ä»¬å¸¸å¸¸æç²¾åæ¾å¨ç¼ç ä¸ï¼èå¾å°å»å ³æ³¨èªå·±æ²éè½åçå¹å »ãææ¾éå°è¿ä¸äºå¤§çï¼æçä¸å±åææ¡£ï¼æçä¸ä¼ç¨gitçå¢éåä½å·¥å ·ï¼è¿æçè¿è¯é½è¯´ä¸æ¸ ãä¸è½å¦è®¤ä»ä»¬å¨èªå·±åèªçé¢åä¸èèå¾å¾æ·±ï¼ä½æ¯å¨åå·¥å¦æ¤ç»åçæ¶ä»£ï¼å¤§å¤æ°é¡¹ç®é½éè¦å¢éåä½æè½å®æï¼å æ¤æ²éæ¯æ æ³é¿å çï¼äº§åç»çå设计å¸ä¹é´çæ²éï¼å端ç»åå端ç»ä¹é´çæ²éï¼ç åé¨åè¿ç»´é¨ä¹é´çæ²é…为ä»ä¹ææ¶å对æ¹å¬ä¸æç½æ们æ³è¡¨è¾¾çææï¼å¯¼è´è·¨é¨é¨çå·¥ä½å¯¸æ¥é¾è¡ã
ããTEDä¸æ个æ趣çæ¼è®²é¢ç®å«ä½ï¼æä¹è¯´è¯äººä»¬æå¬ï¼å£°é³å¦ä¸å®¶æ±å©å®ç»æ们ä¸äºçå¨çä¸è¯¾ï¼å举äºä¸ºä»ä¹æ²¡äººæ¿æå¬æ们说è¯ãå æ¤ï¼æ们å¨ä¸å«äººæ交éçæ¶åï¼æä»¬å¿ é¡»æç½å¯¹æ¹å¨æ³ä»ä¹ï¼ä¹è¦è®©å¯¹æ¹æç½æ们æ³è¡¨è¾¾ä»ä¹ã
ããé¤æ¤ä¹å¤ï¼å¯¹äºå·¥ç¨å¸èè¨ï¼æ²éè½å并ä¸å±éå¨è¯è¨æ²éä¸ï¼è¿æå¨ååå¼åæ¶çæ²éï¼ä¾å¦å¯¹äºä½¿ç¨gitåçæ¬æ§å¶ç项ç®ï¼è¥æ¯æ²¡æææ¡å¥½gitå·¥ä½æµï¼æ²éå°å¼å¸¸å°é¾ã代ç 审æ¥ç³»ç»ä¸ç交äºï¼ä¹æ¯æ²éæ¹å¼çä¸ç§ï¼ä½ éè¦ç解ä»äººç»ä½ çæè§ï¼ä½ è½å¤åä»äººè¡¨è¾¾æ¸ æ¥ä½ çææã
ããå ¨é¢ vs. ä¸ç²¾
ãã以é¨ç½²ç³»ç»ä¸ºä¾ï¼æ©å çé¨ç½²ç³»ç»å®å ¨ä¸ºå ¬æäºæé ï¼è¦æ±åå°ç»ç²åº¦æ§å¶ï¼ä½æä½èµ·æ¥æ¯è¾ç¹ç;èç°å¨è¦æ±åæ¶ç®¡çå ¬æäºåæ°éåºå¤§çæ管äºé群ï¼å¹¶ä¸æ¯å®¶å¨æ¶æä¸é½ä¼ææå·®å¼ï¼è¿å°±è¦æ±é¨ç½²é»è¾è§£è¦ï¼çµæ´»å¯åï¼æ¯æä¸åç¯å¢ï¼ä¸åææï¼ä¸å软件æ ï¼è¿è¦è§£æ¾å®æ½äººåï¼åå°é¨ç½²æ¶é´ã
ããä½ç±äºæ¯ä¸ªäººçç²¾åé½è¢«åæ£å°å¤ä¸ªé¢åï¼å æ¤å¾é¾éä¸ç²¾åæé¨ç½²ç³»ç»å好ï¼äºæ¯æ们å¼å§ä»å¤é¢æåä¸ä¸è½¬åãä¹æ£æ¯å 为è¿ä¸¤å¹´æ们ä»ä¹é½åï¼çç¶ä¸å头大家æäºè¿·è«ï¼èªå·±ä»ä¹é½æï¼ä½åä»ä¹é½åä¸ç²¾ãé£ä¹é®é¢æ¥äºï¼å¦ææ¯å°åºæ¯…å°åºæ¯ç²¾éä¸ç§è¿æ¯å ¨é¢åå±å¥½?
ããTake it easyï¼å¨ææ¯çéè·¯ä¸çä¼¼ä¼æ两ç§æªç¶ä¸åçæ¹åï¼æ¨ªåæ©å±å纵åæ·±å ¥ã横åçç¹å¦ç士ååï¼åå «è¬æ¦èºæ ·æ ·ç²¾é;纵åçæ¯åéå¦æ³¥çå天åï¼å天ä¸åºï¼è°ä¸äºéã横åæ©å±å¯ä»¥æå®½ä½ çè§éï¼è®©ä½ ä¸åå±éå¨æä¸ç§ææ¯ä¸ï¼å¹¶ä¹ç»ä½ çæªæ¥å¤äºä¸ç§å¯è½;è纵åæ©å±ï¼å¯ä»¥ä½¿ç¨ä½ æ·±å»ç解ä¸é¡¹ææ¯çç»èï¼è®©ä½ éä¸æ¥æèé®é¢çæ¬è´¨ï¼ä½ å¯è½ä¼æ讶å°åç°æäºåçé½æ¯ç¸éçãè¿ä¸¤ä¸ªæ¹åé½æ²¡æ对ä¸éï¼åå±å°ä¸å®ç¨åº¦é½ä¼ç¸äºæº¶åï¼å°±å¥½æ¯ä¸å½ä½å®¶ç¦ ä¿®çåé¡¿åæ¸ï¼å ¶å®å°äºæåï¼æ¸æä¸é¡¿ææ¯ä¸æ ·çï¼é¡¿ç±æ¸ä¸æ¥ã
ããä¸è¿åªä¸ªå¨åï¼åªä¸ªå¨åï¼æ个人认为è¿æ¯å åå°å¯¹æä¸ä¸ªé¢åæè¾æ·±çç解åææ¡åï¼è¿èå»å¦ä¹ å ¶ä»æ¹åï¼è¿ä¸ªéçå°±å¦åç²¾éä¸é¨è¯è¨çç¨åºååå»å¦ä¹ å ¶ä»è¯è¨æ¶å°±è½é©¾è½»çè·¯ã
ããå ³äºè¿ä¸¤ç¹çç»åï¼ææå¾æ·±çå°è±¡ï¼å¦ä¸é¢æå°çæ åµï¼åå¼å§çæ¶åï¼è¿ç»´ç¸å ³çäºæ ç¹æï¼æ¯ä¸ªäººé½å¾æ¯å¤é¢æï¼è¦å»coverå¤ä¸ªé¢åï¼ä¹å 为æ¤åªè½ææ¯ä»¶äºæ å好èæ æ³åç²¾ãå¨é群è§æ¨¡ä¸ææ©å¤§åä¸å¡éçå¢é¿åï¼åå ä¸æ¯é®é¢çå°æ¹å¼å§æ´é²åºæ¥ï¼è¿å°±æç²¾é该é¢åçå·¥ç¨å¸æ¥ç¬æ¡ä¸é¢ãè¿æ¯ä¸ä¸ªèªæå¦ä¹ ï¼èªææ¹åçè¿ç¨ï¼ä¹æ¯èªæçªç ´çå ³é®ã
ããäºè§£èªå·±ï¼ææ¡æ¹å
ããå¨å¤§å¦è¯¾å éï¼å·¥ä½ é¢è¯ å å ¥è å¹è®æ¶å¸¸å¸¸è½å¬å°ä¸ä¸ªè¯ï¼ èä¸è§å ï¼å°±æ¯å¯¹èä¸ç涯ä¹è³äººçè¿è¡æç»çç³»ç»ç计åè¿ç¨ï¼å®å æ¬èä¸å®ä½ãç®æ 设å®ãéé设计ä¸é¨åå 容ãèä¸å®ä½ä¸»è¦æ¯æï¼ä¸æ¯ç¡®å®ä½ æ¯è°ï¼ä½ éååä»ä¹å·¥ä½;äºæ¯åè¯å«äººä½ æ¯è°ï¼ä½ æ é¿åä»ä¹å·¥ä½ã人çæ¯åºè¯¥æä¸ä¸ªè§åï¼è¿æ ·å¯ä»¥å¯¹äºæªæ¥è®¾ç«ä¸ä¸ªææï¼æç½åè¿çæ¹åãä½è¿ç±»èä¸è§èå¾å¾è¿ç¹ä¸åï¼è§è§éè¿æèªå·±ç人çç»å¨çº¸ä¸ï¼ç¶åæå¾æ½å·¥çæ³æ³æ¯ä¸åå®é çãä»ç»æ³æ³ä½ ççè½å¨åè¸å ¥ç¤¾ä¼æ¶å°±è½çæ£äºè§£ä½ æ é¿åä»ä¹å·¥ä½ï¼éååä»ä¹å·¥ä½?
ããä¹å¸®ä¸»è¯´è¿ä¸å¥è¯ï¼“å¦æä½ äºè§£èªå·±ï¼è½å¤æç½å°åèªå·±ï¼èä¸è§åå¦åè设”ãæ以ï¼ä½ åªè¦æ¸ æ¥èªå·±æ³è¦ä»ä¹ï¼ç¶åæçè¿ä¸ªç®æ å»åèªå·±æ³åçäºï¼å°±å¯ä»¥äºï¼ä¸ºä»ä¹è¦ç»äººç设é?ä½ä¸å°è¯ä¸ä¸è·¨ç?
ããåæä¸æè°å°äºä¸ä¸ªç½ç»å·¥ç¨å¸çå丽转身ï¼æ¥çèä¸èæ们è¿ç»´å¢éä»UnitedStackæç«ä¼å§å°ç°å¨åçç æ äº ã
ããä»çæ³å½é 大å¦èµ°åºæ¥å¼å§åä¸ç第ä¸å¤©ï¼ä¸ä¸ªç°å®æå¨äºæ们é¢åï¼éè´æå¡å¨å交æ¢æºï¼éæ©IDCãå¨æ°æµªï¼æå¡å¨éåæä¸é¨çé¨é¨åï¼éè´ç¡¬ä»¶æä¸é¨çé¨é¨åï¼äº¤æ¢æºé ç½®æç¸åºçé¨é¨åï¼æå¡å¨ä¸æ¶æç¸åºçé¨é¨å»åï¼æ们åªæåºç¡è¿ç»´åä¸å¡è¿ç»´ç ç»éª ï¼åå ææ é¿çåªæ¯ä¸ä¸ªçå°çé¢å…
ããçæ¥å¯æèªå·±å¨æï¼æè½ä¸°è¡£è¶³é£ï¼æ们çæå¼å§è°ç æå¡å¨çéåï¼äº¤æ¢æºçé ç½®ï¼IDCçéæ©ãéè¿ä¸æçæ¸ç´¢ï¼ç°å¨æ们å¶å®äºä¸å¥æççæºå¶å»æ ¹æ®ä¸åä¸å¡æ¥éåæå¡å¨ï¼å½¢æäºä¸å¥å®åçç½ç»ææå»è¿æ¥åå¸å¨å ¨å½å¤ä¸ªæºæ¿çå ¬æäºåæ管äºé群ï¼ä¹æäºç¨³å®çIDCåä½ä¼ä¼´ã
ãã许å¤æåå¯è½è¿è®°å¾UnitedStackå»å¹´åå¸çUOS 1.0åè¡çï¼å ¶å端代ç å®å ¨ç±è¿ç»´ç»ç¼åãå½æ¶ï¼æ们转身ä»è¿ç»´åæç åï¼è°ç äºä¸»æµçStackOps, Fuel Webï¼æ ¹æ®äº§å设计çéæ±ï¼å¼åäºä¸å¥ç±Python+Puppetç¼åçå端代ç ï¼å®ç°äºOpenstacké群çèªå¨åé¨ç½²;å é¨çæç»éæ&æç»åå¸ç³»ç»ä¹å ¨ç±è¿ç»´ç»è´è´£ï¼æä»¬æ ¹æ®ç åå·¥ç¨å¸çå®é éæ±å¯¹æç»éæå·¥å ·é¾åäºå¤æ¬¡æ´å以å¹é æ´ä¸ªç åä½ç³»çæ¥å¸¸å·¥ä½;å¹´åå ¬å¸ä¸å¡å¼å§æ¶è¶³å ¬æäºåæ管äºï¼æ们åç åé¨é¨å ±å设计äºå ¬æäºï¼æ管äºçæ´ä½æ¶æãç±äºä¸å¡éçæ¥å§ä¸åï¼æ们çæå¼åäºèµäº§ç®¡çï¼èç¹ç®¡ççå¤å¥è¿ç»´å¹³å°ãåæ¶ï¼åä¸è¬çè¿ç»´å¢éä¸åï¼æ们è¿è´è´£èææå¡å¨çéåèªå¨åå¶ä½åç»´æ¤ï¼åä¸Openstackæåºå¤§ç计ç®é¡¹ç®Novaçå®å¶å¼å并ä¸ç´ä¿æä¸ç¤¾åºupstreamåæ¥ï¼åä¸puppet-openstack社åºçå¼åï¼ä¸ç´å¨å社åºè´¡ç®æºç ã
ããå 为æä»¬æ¸ æ¥æåçä¸åé½æ¯ä¸ºäºè½æ“五åæï¼å æ¤åä»ä¹å¹¶ä¸éè¦ãèä¸éè¿è¿ä¸¤å¹´ç磨ç»ï¼æ们å¨ææ¯ä¸æ大çæ¶è·å¨äºå¤§å®¶çè§éä¸åå±éäºåèªçä¸äº©ä¸åå°éï¼å¨é¢å¯¹æ°é®é¢æ¶ï¼å¯ä»¥ç«å¨ä¸åçè§åº¦å»æèï¼è¿ç§å¨å¤§å ¬å¸éæ æ³è·å¾çç»éªå°±æ¾å¾å¼¥è¶³çè´µãå æ¤äºè§£ä½ èªå·±ï¼æç½ä½ èªå·±æ³è¦ä»ä¹ï¼ç¶åææ¡å¥½æ¹åã