1.为MediaWiki安装可视化编辑器VisualEditor
2.谁有黑马程序员教学视频全套!源码笔记?
3.ZYNQ+linuxç½å£è°è¯ç¬è®°ï¼3ï¼PL-ETH
4.ç¾å½å¤å°å¤§å¦ä½¿ç¨python
5.druid源码学习笔记9_testOnBorrow&testOnReturn&testWhileIdl
6.玩客云折腾记录(一):编译 ArmBian 系统
为MediaWiki安装可视化编辑器VisualEditor
本来没想要更新的源码笔记,直到今天群里有朋友贴了一段配置代码,源码笔记就知道很多人可能“吃药”了。源码笔记在MediaWiki升级到1.之后,源码笔记Parsoid服务被PHP重构了,源码笔记坑人html源码直接装入源码中,源码笔记可视化编辑器变得“开箱即用”,源码笔记所以下面的源码笔记文章极有可能会成为历史。
这篇文章于年的源码笔记1月份发布于本人的网站,当时偷懒,源码笔记有部分内容没有写完整。源码笔记直到最近重新安装可视化编辑器才发现:安装过程并不是源码笔记太过复杂,基本上只要你的源码笔记Parsoid安装成功并且能够运行,那么离成功也就不远了,源码笔记而所缺的就是几个检测结果和。另外被restbase给迷惑了,其实并不是必须的。
MediaWiki的可视化编辑器从年5月立项开始,发展到至今快6个年头,而真正走入大众视野却是灯搭源码在年的年中。目前维基百科的默认编辑器就是VisualEditor,它的所见即所得的特性提高了用户的体验,降低了入门门槛并提升了编辑维基的乐趣。 VisualEditor的原理,简单来说就是通过后台Parsoid 的程序来承担把wiki标记转化成html的任务,同时VisualEditor以插件的形式在MediaWiki中运行,用户可以在原来的编辑界面直接使用,编辑者角度上几乎无学习成本。 而它的安装难度要大于其他扩展程序,主要也就在于需要Parsoid服务(它是一个基于Nodejs的解析器服务。 它被许多MediaWiki扩展使用,包括VisualEditor,Flow,内容翻译和其他应用程序)的支持。而官方文档上除了有Ubuntu和Debian的安装方法外(基本上属于自动安装),没有给出CentOS的安装方法。 本文以指导如何在CentOS7下安装VisualEditor。
提示:
一、安装Parsoid
这是为在没有安装Parsoid的情况下,系统提示的loop源码解析错误信息。你虽然能够看到一个可视化编辑器的样式却无法使用。
1、安装依赖关系
要安装Parsoid服务并配置VisualEditor,我们需要在系统上安装一些CentOS软件包。 具体来说,我们将安装Nodejs,npm,vim和git。 使用下面的yum命令安装所有需要的软件包。
一定要确保所有的软件包和依赖项已经安装(如果你使用宝塔面板,那么在软件商店中安装PM2管理器,并且选择你的Node版本)。
2、安装并配置Parsoid
Parsoid可以安装在单独的MediaWiki服务器上。 但是对于本教程,我们默认是将MediaWiki和Parsoid安装在同一个CentOS 7服务器。 现在,由于我们使用的是CentOS 7服务器,因此我们需要手动安装Parsoid服务,因为官方软件包仅适用于基于Ubuntu / Debian的hbuilder源码网站操作系统。 因此,首先创建一个新的/ opt / parsoid目录,并使用git命令克隆最新的parsoid,如下所示。
现在进入“/ opt / parsoid”目录,使用下面的npm命令安装Parsoid服务。
安装完成后,您将得到如下结果。
接下来,通过编辑相应的配置文件来配置Parsoid服务。 将示例配置“localsettings.example.js”复制到“localsettings.js”,然后使用vim编辑该文件。
取消注释“parsoidConfig.setMwApi”行,并使用MediaWiki API URL更改“uri”值,如下所示。
保存并退出。
注:此步骤非必须,而且默认配置文件关闭了调用localsettings.js文件的功能的,除非你的Parsoid和MediaWiki不在同一个服务器上。
现在将'config.example.yaml'配置复制到'config.yaml'并用vim编辑器进行编辑。神计源码
在“mwApis”行(第行)上,使用MediaWiki API URL和“域”值更改“uri”值,并使用你自己的域名。
uri中的地址请复制到浏览器检验一下,在我的网站中api.php文件是位于网站根目录下的,如果你将MediaWiki安装在网站的某个子目录下(如Wiki),那么请将uri改为/s/1Xw3ehUZTcv-nkkobpA
提取码:o软件(中国大陆及香港用语,台湾称作软体,英文:software)是一系列按照特定顺序组织的计算机数据和指令的集合。一般来讲软件被划分为系统软件、应用软件和介于这两者之间的中间件。软件并不只是包括可以在计算机(这里的计算机是指广义的计算机)上运行的电脑程序,与这些电脑程序相关的文档一般也被认为是软件的一部分。简单的说软件就是程序加文档的集合体。另也泛指社会结构中的管理系统、思想意识形态、思想政治觉悟、法律法规等等。
ZYNQ+linuxç½å£è°è¯ç¬è®°ï¼3ï¼PL-ETH
å¨ZYNQä¸ä½¿ç¨gigE Visionåè®®çç½ç»æ¥å£ç¸æºã
第ä¸æ¥ï¼è°éPS侧ç½å£GEM0ï¼Xilinx BSPé»è®¤é 好ï¼ã
第äºæ¥ï¼è°éPS侧ç½å£GEM1ï¼è§åä¸ç¯ææ¡£ï¼å¼åç¬è®°(1)ï¼ã
第ä¸æ¥ï¼è°éPL侧ç½å£ï¼æ¬æéè¿°ï¼ã
第åæ¥ï¼å¨PL侧ç½å£ä¸éªè¯Jumbo Frameç¹æ§ï¼å¹¶å¨åºç¨å±éé gigE Visionåè®®ã
æ ¹æ®ãxappãå¯ç¥ï¼PL侧çPHYæ¯æBase-XåSGMII两ç§é ç½®ï¼è¿ä¸¤ç§é 置对åºä¸¤ç§ä¸åçPHYå¼èæ¥å£ï¼è¿æ¥å°MACï¼ãèæ们çhdfæ件使ç¨çæ¯Base-Xçé ç½®ã
å ³äºç½å£çLinux驱å¨ï¼æ们å¨å®ç½æ¾å°ä¸ä»½èµæï¼ Xilinx Wiki - Zynq PL Ethernet ãèµæå¾é¿ï¼æ们åªçä¸æ们ç¸å ³ç2.4.1 PL Ethernet BSP installation for Base-Xâè¿ä¸ç« èå°±å¯ä»¥äºã
é¦å å¯¼å ¥FPGA设计åäºæä¾çhdfæ件ï¼
å¨å¼¹åºçå¾å½¢çé¢éï¼è¿å ¥Subsystem AUTO Hardware SettingsââEthernet SettingsââPrimary Ethernetï¼ç¡®è®¤å¯ä»¥çå°PL侧ç½ç»è®¾å¤axi_ethernet_0ï¼è¯´æhdfæ件éå·²å å«äºå¿ è¦çç½å£ç¡¬ä»¶ä¿¡æ¯ï¼
ä¸å¾ä¸è¢«éä¸çç½å£å°æ为Linuxä¸ç设å¤eth0ãè¿éæ们é»è®¤éæ©ps7_ethernet_0ï¼å³ä½¿ç¨GEM0ä½ä¸ºé¦éç½å£ã
å¯ç¨Xilinx AXI Ethernet驱å¨
è¿å ¥Device Drivers -- Network device support â éä¸Xilinx AXI Ethernetï¼ä»¥åXilinx Ethernet GEMï¼è¿æ¯PS侧ç½å£ç驱å¨ï¼
è¿å ¥Networking support â éä¸ Random ethaddr if unset
è¿å ¥Device Drivers -- Network device support -- PHY Device support and infrastructure â å¯ç¨Drivers for xilinx PHYs
è¿å ¥~~~~Device Drivers -- DMA Engine Support -â ç¦ç¨~~~~Xilinx AXI DMAS Engine~~~ ï¼å¯¹åºçé 置项å为 ~~ CONFIG_XILINX_DMA ~~~ï¼
注æï¼ Xilinx Wikié对设å¤æ èç¹çå¼ç¨æ误ï¼&axi_ethernetï¼ï¼å¯¼è´ç¼è¯æ¥éï¼åºæ¹ä¸º&axi_ethernet_0ã
注ï¼PL-ETH驱å¨æå¨è·¯å¾ï¼<project>/build/tmp/work-shared/plnx_arm/kernel-source/drivers/net/ethernet/xilinx/xilinx_axienet_main.cåxilinx_axienet_mdio.cã对åºçå æ ¸é 置项为CONFIG_NET_VENDOR_XILINXåCONFIG_XILINX_AXI_EMACã
å¯ç¨ethtoolåtcpdumpï¼è°è¯ç¨ï¼éå¿ é¡»ï¼ï¼
ç¶åå°çæçBOOT.BINåimage.ubæ·è´å°SDå¡æ ¹ç®å½ä¸ï¼å°SDå¡æå ¥æ¿åä¸ï¼ä¸çµè¿è¡ã
ä¸çµåï¼ä½¿ç¨ifconfig eth1æ¥çç½å£ä¿¡æ¯ï¼è§å¯MACå°åä¸è®¾ç½®çä¸è´ï¼ä¸ifconfig eth1 ..1. up没ææ¥éã
æµè¯ç½ç»éè·¯ï¼ping PCæ¯éçã说æç½å£å·¥ä½æ£å¸¸ã
Linuxä¸eth1ï¼å³PL-ETHï¼çMACå°åæ误
é®é¢æè¿°ï¼
å¼æºæå°ï¼
注æï¼
MACå°åæ¯éçï¼é©±å¨é解æåºçæ¯GEM0çMACå°åã
è¯éªåç°ï¼å³ä½¿å¨system-user.dtsiéä¸ålocal-mac-addressï¼ä¹ç §æ ·è§£æåºçæ¯GEM0çMACã
èå°system-user.dtsiéçlocal-mac-addressæ¹å为pl-mac-addressï¼å¹¶å°é©±å¨é解æçå符串ä¹å¯¹åºæ´æ¹ä¸ºpl-mac-addressï¼åå¯ä»¥æ£ç¡®è§£æåºæ¥ï¼
Passing MAC address to kernel via Device Tree Blob and U-Bootï¼
/support/answers/.html
U-Bootéçç¯å¢åéethaddrä¼è¦çæ设å¤æ épl-ethçlocal-mac-addrå段ï¼ä»èå½±åLinuxå¯å¨åçç½å¡MACå°åï¼
ä½U-Bootéçç¯å¢åéipaddrä¸ä¼å¯¹Linuxå¯å¨åçé 置产çä»»ä½å½±åãå 为设å¤æ éæ ¹æ¬å°±æ²¡æå ³äºIPå°åçé ç½®ã
phy-modeæä¹ä¼æ¯sgmiiï¼æ¥äºä¸å®æ¹çæä¾çBSPéï¼ä¹æ¯âsgmiiâã说æè¿ä¸ªæ²¡é®é¢ãå ·ä½åå ä¸æ¸ æ¥ã
@TODO: 设å¤æ éçä¸æå·ç顺åºå¦ä½å½±ååè½ï¼
为ä½è¯»åºæ¥çIRQå·ä¸å¯¹å¢ï¼è¿æ¯å 为è¿é读å°çä¸æ¯ç¡¬ä»¶çä¸æå·ï¼èæ¯ç»è¿ç³»ç»æ å°ä¹åç软件IRQ numberã两è ä¸å ·æ线æ§å ³ç³»ã
å ³äºä¸æå·ççé®ï¼
Linuxä¸çç½å£eth0ãeth1ç顺åºï¼ä¼¼ä¹æ¯æç §phyå°åä»å°å°å¤§æ¥æå¸çã
Xilinx xapp-zynq-eth.pdf (v5.0) July ,
/support/documentation/application_notes/xapp-zynq-eth.pdf
Xilinx Wiki - Zynq PL Ethernet:
/wiki/spaces/A/pages//Zynq+PL+Ethernet
Xilinx Wiki - Linux Drivers:
/wiki/spaces/A/pages//Linux+Drivers
Xilinx Wiki - Linux Drivers - Macb Driver:
/wiki/spaces/A/pages//Macb+Driver
Xilinx Wiki - Zynq Ethernet Performance:
/wiki/spaces/A/pages//Zynq+Ethernet+Performance
æ¥å°å ³äºJumbo frame MTUçå®ä¹ï¼å½åå¼ä¸ºï¼å¯å¦æ¹å¤§ä¸äºï¼
驱å¨æºç éå ³äºjumbo frameç说æï¼
设置MTU为ï¼åç°pingå æ大é¿åº¦åªè½è®¾ä¸ºping ..1. -s
https://lore.kernel.org/patchwork/patch//
ãå®ã
ç¾å½å¤å°å¤§å¦ä½¿ç¨python
导读ï¼æ¬ç¯æç« é¦å¸CTOç¬è®°æ¥ç»å¤§å®¶ä»ç»æå ³ç¾å½å¤å°å¤§å¦ä½¿ç¨pythonçç¸å ³å 容ï¼å¸æ对大家ææ帮å©ï¼ä¸èµ·æ¥ççå§ãPython å¨ç¼ç¨è¯è¨ä¸æ¯ä»ä¹å°ä½ï¼ä¸ºä»ä¹å¾å¤å¤§å¦ä¸æ PythonPythonæ¯å½ä¸é常çé¨çä¸ç§ç¼ç¨è¯è¨ãçé¨å°ä»ä¹ç¨åº¦ï¼æ们é¦å ççæè¿æµè¡çç¼ç¨è¯è¨æè¡æ¦ï¼
è¿æ¯ TIOBEç¼ç¨è¯è¨ç¤¾åºåå¸çå¹´1ææè¡æ¦ï¼Pythonå·²ç»è¶ è¿C#è·å± çé¨ç¼ç¨è¯è¨ç第åä½ã
é£ä¹ï¼Python为ä»ä¹ä¼æé¿ä¸ºå¦æ¤çé¨çè¯è¨å¢ï¼
é¦å ï¼è·æè¿å¤§ççAI人工æºè½å深度å¦ä¹ ææ¯æ¯åä¸å¼çãç°å¨æµè¡çAI人工æºè½ææ¯å¤§é¨åé½æ¯ç¨Pythonè¯è¨ç¼åçï¼è¿å¤§å¤§ä¿è¿äºçPythonè¯è¨çåå±ãAI深度å¦ä¹ ææ¯æ¬èº«çç¹ç¹å³å®äºå ¶ä¸éåéæç¼è¯åè¯è¨ï¼èPythonè¯è¨è¢«éä½AIææ¯æ¡æ¶çåºç¡è¯è¨ï¼æ´å¤çæ¯æºäºPythonçå¨æç¹æ§åå ¶å¼åæçé«çæ§è½ä¼å¿ã
说起æ¥RubyãPerlçä¸Pythonåå±å¨æè¯è¨ï¼ä¸è çè¿è¡æçç¸å·®å¹¶ä¸å¤§ï¼èPythonæ¢å¯ä»¥åç½ç»åå¯ä»¥å¤çæ°æ®ï¼æ以Pythonå½ä»ä¸è®©çæ为äºAIææ¯çé¦éã
è±ç£çå´èµ·æ¯å¯¹Pythonè¯è¨æ§è½çå®ä¾é´è¯ãè±ç£æ¯ææ©ä½¿ç¨Pythonä½ä¸ºè¯è¨çç½ç«ï¼å ¶åå§äººç¨3个ææ¶é´ä½¿ç¨åºäºPythonçQuixoteæ¡æ¶å¼åæ建äºæåçè±ç£ç¤¾åºçæ¡æ¶ãå½æ¶ï¼PHPåJAVAæ¯ç»å¯¹ç主æµææ¯ï¼ä½æ¯æ³è¦ç¨PHPæJAVAå¼åç½ç«ï¼éè¦èªå·±å¨æå¤ç大éçå·¥ä½ï¼åé ä¸ä¸ªäººå¨çæ¶é´å å®æå¼åä¸ä¸ªåè½é½å ¨ç大åç½ç«å ä¹æ¯ä¸å¯è½çï¼æ以Pythonçææ·æ§ä¸é«ææ§ä½¿å ¶å½é为è±ç£çç½ç«è¯è¨ã
å ¶æ¬¡ï¼Pythonæ¶åå¤é¢åçåºç¨èå´ï¼ä¿è¿äºå ¶æ为çé¨è¯è¨ãé¤äºwebå¼åï¼Pythonä¹åºç¨äºå¦æ¯ç 究åç§å¦é¢åã对äºç§ç 人åæ¥è¯´ï¼Pythonç®åæå¦ï¼å®¹æä¸æï¼å³ä½¿é计ç®æºä¸ä¸çç§ç å¦è å©ç¨Pythonåºå¤§çåºåç®åçè¯æ³ï¼ä¹å¯ä»¥ç¼åå·¥å ·å¸®å©è¿è¡ç§å¦å¦æ¯ç 究ã
Pythonæ¥æMatplotlibï¼matplotlib.org/ï¼ånumPyï¼ï¼è¿æ ·å¼ºå¤§çç»å¾åºåæ°å¼æ©å±ï¼è½å¸®å©ç§ç å¦æ¯äººåè¿è¡ç»å¾åæ°å¼åæãè¿ä½¿å¾Pythonå¨è¯¥é¢åæ为é¾ä»¥æ¿ä»£çéæ©ãåºäºåæ ·çåå ï¼Pythonå¨å½å¤æ¿åºé¨é¨ä¹è¢«å¤§éè¿ç¨ã
Pythonè¿å¹¿æ³åºç¨äºçµåå¶é è¡ä¸ï¼æ¯å¦å¸çº¿ä»¿ççCADé¢åï¼æ¯èµ·ä¼ ç»çTCLç¼ç¨ï¼Pythonè¯è¨è¦å好çå¤ãå¾å¤ä½¿ç¨C/C++/JAVAç¼åçæµè¯å·¥å ·ï¼ç±äºéæç¼è¯è¯è¨ç»´æ¤ææ¬ç¸å¯¹è¾é«ï¼ç°å¨å·²ç»å¼å§è½¬ä¸ºç¨Pythonç¼åäºãå¨éèé¢åï¼æ¯å¦éå交æï¼Pythonåæ ·æ许å¤å¼ºå¤§çæ©å±åºã
éçPythonæ©å±åºä¸æåå±å£®å¤§ï¼Pythonå¨ç§ç ãçµåãæ¿åºãæ°æ®åæãwebãéèãå¾åå¤çãAIææ¯åæ¹é¢é½æ强大çç±»åºãæ¡æ¶å解å³æ¹æ¡ï¼ä»¥è´æäºâå·²ç»æ²¡æä»»ä½è¯è¨è½å¤å¨æPythonå¨ä»åç产çæ´»çæ ¸å¿è¯è¨å°ä½âç说æ³ãå æ¤ä¹åºç°äºå¨ä¹å¡æè²é¶æ®µå°±å¼å§ææPythonè¯è¨çæ åµåºç°ãæ®è¯´å¨ç¾å½ï¼è¿å©´å¹¼å¿é½æ Python ç¼ç¨ä¹¦ï¼Python è¦ä»å¨å¨æèµ·ã
第ä¸ï¼å½å®¶å¯¹äºäººå·¥æºè½çéè§ï¼å©æ¨äºPythonççé¨ãå¹´1ææ¥ä¸åï¼æè²é¨å¬å¼æ°é»åå¸ä¼ï¼ä»ç»äºãæ®éé«ä¸è¯¾ç¨æ¹æ¡åè¯æçå¦ç§è¯¾ç¨æ åï¼å¹´çï¼ãçæå ³æ åµï¼å¹¶éæ°ä¿®è®¢äºè¯æçé¨å¦ç§ç课ç¨æ åãå¨æ¤æ¬¡âæ°è¯¾æ âæ¹é©ä¸ï¼æ£å¼å°äººå·¥æºè½ãç©èç½ã大æ°æ®å¤çåå ¥æ°è¯¾æ ï¼è¿ä¹å°±æå³çä»å¹´ç§å£å ¥å¦çé«ä¸çï¼å°è¦å¼å§å¦ä¹ Pythonäºã
pythonè½åä»ä¹ï¼
pythonå¯ä»¥åï¼
1ãWebå¼åï¼
2ãæ°æ®ç§å¦ç 究ï¼
3ãç½ç»ç¬è«ï¼
4ãåµå ¥å¼åºç¨å¼åï¼
5ã游æå¼åï¼
6ãæ¡é¢åºç¨å¼åã
Python解éå¨æäºæ©å±ï¼å¯ä»¥ä½¿ç¨CæC++ï¼æè å ¶ä»å¯ä»¥éè¿Cè°ç¨çè¯è¨ï¼æ©å±æ°çåè½åæ°æ®ç±»åãPython ä¹å¯ç¨äºå¯å®å¶å软件ä¸çæ©å±ç¨åºè¯è¨ãPython丰å¯çæ ååºï¼æä¾äºéç¨äºå个主è¦ç³»ç»å¹³å°çæºç ææºå¨ç ã
æ©å±èµæ
ç±äºPythonè¯è¨çç®æ´æ§ãæ读æ§ä»¥åå¯æ©å±æ§ï¼å¨å½å¤ç¨Pythonåç§å¦è®¡ç®çç 究æºææ¥çå¢å¤ï¼ä¸äºç¥å大å¦å·²ç»éç¨Pythonæ¥ææç¨åºè®¾è®¡è¯¾ç¨ãä¾å¦å¡èåºæ¢ é大å¦çç¼ç¨åºç¡ã麻ççå·¥å¦é¢ç计ç®æºç§å¦åç¼ç¨å¯¼è®ºå°±ä½¿ç¨Pythonè¯è¨è®²æã
ä¼å¤å¼æºçç§å¦è®¡ç®è½¯ä»¶å é½æä¾äºPythonçè°ç¨æ¥å£ï¼ä¾å¦èåç计ç®æºè§è§åºOpenCVãä¸ç»´å¯è§ååºVTKãå»å¦å¾åå¤çåºITKã
åèèµææ¥æºï¼ç¾åº¦ç¾ç§-Python
pythonèåæ¯ä¸é¡¹ç§æè¿å¨æ¯è¾å®æ¹ç说æ³ï¼pythonæ¯ä¸ç§è§£éåè¯è¨ï¼è§£éåè¯è¨æ¯æ代ç ä¸è¡ä¸è¡ç解éæ§è¡ï¼å°±å¥½åæ个 åå£°ä¼ è¯ ï¼ä½ æ¯è¯´ä¸å¥è¯ï¼ä»é½è½ä¸é´æå°ç»ä½ ç¿»è¯ï¼æä½ è¯´çè¯ï¼ææå好ç代ç ï¼ç¿»è¯ææºå¨è½å¤ç解çè¯è¨ã对äºæºå¨æ¥è¯´ï¼è¿äºç¿»è¯åçè¯è¨å°±æ¯æºå¨è¯è¨ï¼å°±æ¯æ令ï¼æºå¨æ¶å°æ令åï¼å°±ä¼æ ¹æ®æ令æ§è¡å¯¹åºçæä½ã
ä¸è§£éåè¯è¨ç¸å¯¹çï¼æç¼è¯åè¯è¨ï¼ç¼è¯åè¯è¨åéè¿ç¼è¯å¨å å°ä»£ç ç¿»è¯ææºå¨è¯è¨ï¼å交ç»æºå¨å»æ§è¡ã举个ä¾åï¼ææ¹ä¸»æäºä¸ä¸ªä¼è®®ï¼åä¼çåå«æè±å½äººãä¿å½äººå西çç人ï¼ä»ä»¬ä¸æ¹é½å¸¦äºèªå·±çåå£°ä¼ è¯ãåå¦æ¯è§£éåè¯è¨å¢ï¼æå¨å¼ä¼çæ¶åç¨ä¸ç§æ¯ä¸ªåå£°ä¼ è¯é½å¬å¾æççè¯è¨ï¼ä¹å°±æ¯ä¸ç§å®æ¹ç¨è¯ãè¿æ ·æå¯ä»¥ä¸é´æå°ç¨è¿ç§è¯è¨æ¥å交æµï¼å 为è¿äºç¿»è¯äººåé½ä¼ä¸ºè¿ä¸å½åä¼äººååæ¥ç¿»è¯æç®æ è¯è¨ï¼ä½ åºè¯¥ä¹æ³¨æå°äºï¼è§£éåè¯è¨ç±»ä¼¼äºä¸ç§éç¨çè¯è¨ãèå¦ææ¯ç¼è¯åè¯è¨å¢ï¼æä¼è®©æè¿è¾¹ç3个翻è¯äººåå°æçä¸ä»½ä¸ææ¼è®²ç¨¿ï¼åå«ç¿»è¯æè±æççãä¿æççå西ççè¯ççï¼å¨å¼ä¼çæ¶åï¼æåªè¦äº¤ç»åä¼çå½é å人å»ç¿»é 就好äºã解éåè¯è¨ä¾§éçæ¯ä¸ç§éç¨çãè½å¤å®æ¶è§£éç¿»è¯çç¹æ§ï¼èç¼è¯åè¯è¨ä¾§éçæ¯æé对æ§ãæååå¤çç¹æ§ãç¶èï¼å¨å¼ä¼çæ¶åï¼è§£éåæçæ¯æ²¡æé£ä¹é«çï¼å 为éè¦åå£°ä¼ è¯æ¶èæ¶é´å»åç¿»è¯ï¼èç¼è¯åçæçä¼é«äºï¼å 为翻è¯å·¥ä½å·²ç»å¨å¼ä¼åå好äºï¼åªéè¦åä¼äººåç解并ä¸æ§è¡å°±å¥½ã
å¹´çå£è¯èï¼è·å °ç¨åºåGuido van Rossumï¼ åå¤Â·èç½èå§ ï¼ä»¥ä¸ç®ç§°åå¤ï¼å¨å®¶ä¼åæ èï¼ä¸ºäºæåæ¶é´ï¼ä»å¼åäºä¸ç§æ°ç解éåè¯è¨ãå¯è§ï¼è¯¥ç¨åºåæ èçæ¶åï¼å°±æ¯å代ç ãå 为ä½è é常å欢 Monty Python's Flying Circusï¼å·¨èå§å¢ä¹é£ç¿ç马æå¢ï¼è¿æ¯è±å½çä¸ä¸ªçµè§åå§ï¼ï¼å°±æ¿pythonä½ä¸ºè¿ä¸ªæ°è¯è¨çååãææ³å¤§å®¶ä¸ä¸å®é½ç¥éè¿é¨åå§ï¼ä½æ¯å¯è½é½å¬è¯´è¿pythonï¼å¯è½å¾®ä¿¡å¨å 天åç»ä½ æ¨è¿pythonç¸å ³çå¹è®å¹¿åï¼å¯è½ä¸äºå¦æ ¡å·²ç»å°ææ¡pythonåºç¡æ¦å¿µä½ä¸ºä¸é¨é修课ï¼å¯è½ä½ çæºè½å®¶å± éçæä½ç³»ç»æä¸é¨åæ ¸å¿ä»£ç æ¯ç¨pythonå®ç°çï¼å¯è½ä½ çææºéæä¸ä¸ªæ件ä¹æ¯ç¨pythonå®ç°çï¼pythonç°å¨çåºç¨èå´é常广æ³ï¼åè½ä¹é常强大ã
åå¤ä¹åå¨ è·å °æ°å¦å计ç®æºç§å¦ç 究å¦ä¼ ä¸çï¼å¨é£éï¼ä»ä¸ºABCç¼ç¨è¯è¨å·¥ä½äºå¥½å¤å¹´ã ABCè¯è¨é¿è¿æ ·ç
è¿æ¯ä¸ä¸ªå½æ°ï¼ä½ ä¹è®¸çä¸æï¼æ ¹æ®è±æåè¯ï¼æ许å¯ä»¥å¤§æ¦çåºç¹ä»ä¹ãè¿éåªæ³è®©ä½ ç¥éï¼pythonä¹å·®ä¸å¤é¿è¿æ ·ï¼ç¸æ¯è¾ä¼æ´å®¹æç解äºã
ABCè½ç¶æ¯ä¸é¨ç¼ç¨è¯è¨ï¼å®çå®ä½æ¯ä½ä¸ºæå¦æåå设计çå·¥å ·ï¼æ¯ä¸é¨ä¸ºå¦æ ¡èå¸æè ç§ç 人å设计çãABCçå®ä½å³å®äºå®åä¼ä¸æ¯å¾å¹¿æ³ï¼å¹¶ä¸å®ä¹æ使ç¨é¨æ§ï¼å¯¹è®¡ç®æºä¸äºè§£ç人ï¼æ²¡æç»è¿ä¸æ®µæ¶é´çå¦ä¹ ï¼å¯è½æ ¹æ¬å°±ä¸ä¸äºæãæ以ï¼ABC并ä¸è½ä½ä¸ºä¸é¨éç¨çç¼ç¨è¯è¨ï¼å¨ä¸å ä¹æ æ³è·å¾æåãè½ç¶è¯´ABC没æpythoné£ä¹æåï¼ä½æ¯ABCå¯ä»¥è¯´æ¯"the mother of python"ï¼ä½è å¨å¾å¤å°æ¹é½åé´äºABCï¼åå ¶ç²¾åãåå ¶ç³ç²ãç°å¦ä»ï¼pythonæ¯é¿è¿æ ·ç
å¯è½å¯¹äºæ²¡æ¥è§¦è¿ç¼ç¨ç人æ¥è¯´ï¼å®ä»¬ä¸¤ä¸é½æ¯ä¸æ ·çï¼ä¸é½æ¯ä¸å è±æåæ¯ä¹ï¼æé½çä¸æãä½æ¯å¯¹äºåå¦è®¡ç®æºè¯¾ç¨ï¼é£äºéè¦å¦ä¹ Cè¯è¨ç人æ¥è¯´ï¼pythonç¸æ¯è¾ç®æ¯æ´å®¹æç解äºãpythoné常ç®çï¼ä¸äºå¤æçæµç¨ï¼å¨Cè¯è¨ä¸ï¼å¯è½éè¦å åè¡ä»£ç ï¼ä½æ¯å¨pythonä¸ï¼å¯è½å°±åªéè¦å è¡ä»£ç ãå½ç¶ä¸åçä¸å¡åºæ¯ï¼å¯è½ä¸æ¯è¿æ ·çï¼ä½æ¯æ®éæ åµä¸ï¼ç¨pythonçå¼åæçæ¯é常é«çãpythonéåå¿«éå¼åï¼éå产åå¿«éè¿ä»£åºæ°ã
å¹´1æï¼ä¹å°±æ¯è¯è¨é¢ä¸çå¹´åï¼ åå¤ åDARPA(Defense Advanced Research Projects Agencyï¼ç¾å½å½é²é¨ä¸ä¸ªè´è´£ç§ç çä¸å±æºæ)ç³è¯·èµéãæå»ç¿»äºä¸è¯¥ç³è¯·ç修订çï¼ä¿®è®¢çå¨å¹´8æ份æ交ï¼ä¿®è®¢çæ¯ç¬¬ä¸çå 容æ´å ·ææ¦æ¬æ§ï¼å¹¶ä¸å 容ç¿å®ï¼æ¡çæ¸ æ°ï¼å¼å¾ç¿»é ã
该修订çå« Computer Programming for Everybody ï¼ç´è¯è¿æ¥ï¼å°±æ¯é对æ¯ä¸ªäººç计ç®æºç¼ç¨ï¼ç¿»è¯ä¸ºéä¿ææçè¯ââ人人ç¼ç¨ï¼äººäººç¼ç¨æ¯ä¸ç§ ç¤¾ä¼ ç°è±¡ï¼æ¯ä¸ªäººé½æä¸å®çç¼ç¨è½åï¼å¹¶ä¸å¯¹è®¡ç®æºæä¸å®ç认è¯ï¼äºè§£è½¯ç¡¬ä»¶æ¯æä¹è¿è½¬èµ·æ¥çï¼äºè§£ä¸äºè½¯ç¡¬ä»¶ç设计è§èï¼è½å¤éè¿ç¼ç¨æ¥è¡¨è¾¾èªå·±çæ³æ³ï¼è½å¤éè¿ç¼ç¨æ¥é ç½®èªå·±ç软件ï¼éè¿ç¼ç¨æ¥æ§å¶èªå·±çæºå¨ï¼ä»¥æ¹åèªå·±ççæ´»ã举个ä¾åï¼ä½ å¨æå®ä¹°äºä¸ä¸ªæ«å°æºå¨äººï¼è¯¥æºå¨äººæ¯æå®ä¹ææ«è·¯çº¿ï¼æ¯æ设置æ«å°æºå¨äººå¨éè¦æ´æ¢æ«æçæ¶åï¼æ示ç¯æ¾ç¤ºæå®çé¢è²ãä½ ç¥éæ«å°æºå¨äººå¯ä»¥åä»ä¹ï¼æä»ä¹æä½ä¹ æ¯ï¼è¿æ¯åºäºä½ 对ä¸äºæºå¨çç解ï¼å¦æä½ ç¨è¿å¾å¤è½¯ä»¶ï¼æè åä¸è¿è½¯ä»¶ç设计ï¼ä½ 大æ¦é½ç¥éä¸äºè½¯ä»¶å¯è½é½æâ设置âãâç¼è¾âæâ帮å©âçèåé®ãè¿ç§è®¾è®¡æç»´ï¼æè æä½ä¹ æ¯ï¼é½æ¯å¾å¤è½¯ä»¶é½æçï¼æäºè¿ç§è®¤è¯ä¹åï¼ä½ é¢å¯¹å¾å¤åç±»åç软件ãæè åç±»åç产åï¼å°±å¤§æ¦è½å¤ç¥éä»é£éå ¥æï¼ä»¥å对å®æä»ä¹åè½ï¼é½æä¸ä¸ªåæ¥çæå¾ æè 认è¯ãæ¢ç¶å¤§å®¶é½äºè§£è®¡ç®æºäºï¼é£ä¹è®¡ç®æºçä¸äºæ¦å¿µæè 说æ¯ç念ï¼å¯ä»¥è¯´æ¯å±äºå¸¸è¯çä¸é¨åï¼é¢å¯¹ä¸äºè®¡ç®æºæè 说æºè½è®¾å¤ï¼ä¹å¤§æ¦ç¥éä»åªéä¸æ使ç¨ãæè§å¾è¿å°±æ¯ä½è è¦è¾¾å°çæ¿æ¯ã
该修订ç主è¦æå 个ç®çï¼
å¨è¿éï¼ä»æ³ä»æ¨å¹¿pythonå¼å§ï¼å 为pythonä½ä¸ºä¸é¨éåå¿«éå¼åçå·¥å ·ï¼æ¢éåä¸å®¶ï¼ä¹éååå¦è ï¼åæ¶pythonæä¸ä¸ªæ´»è·çä¸ä¸æå¢é¿çç¨æ·ç¾¤ä½ï¼è¿ä¸ªç¨æ·ç¾¤ä½å¯¹ä»è¿ä¸ªç³è¯·ä¹é常æå ´è¶£ï¼æ¿æ为ä¹åªåãpythonçç¨æ·æ°å¤ï¼è¯´æå·²ç»å¨å¸åºå¾å°äºä¸å®ç认å¯ï¼å¹¶ä¸è¿ä¸ªç¨æ·ç¾¤ä½ä¹æ¿æ为pythonçåå±åè´¡ç®ï¼è¿å¯¹äºä¸é¨ç¼ç¨è¯è¨æ¥è¯´ï¼æ好ä¸è¿äºã
该ææ¡ç åºæ¬è®ºç¹ é¨ååå¾å¾å¥½ï¼ä»è¯´ä»æ³æ®å计ç®æºåºç¨ï¼ä½å¹¶ééè¿ä»ç»æ°ç硬件ï¼æè æ°è½¯ä»¶è¿ç§å½¢å¼ï¼èæ¯éè¿èµäºæ¯ä¸ªäººç¼ç¨è½åæ¥å®ç°ãä¿¡æ¯ææ¯çåå±ç»äºäººä»¬åç§å¼ºå¤§ç计ç®æºï¼å®ä»¬ä»¥æ¡é¢çµèãç¬è®°æ¬çµèæè åµå ¥å¼ç³»ç»çå½¢å¼åå¨ï¼å¦æç¨æ·å¨è½¯ä»¶è®¾è®¡åå®ç°ä¸æä¸ä¸ªéç¨ç认ç¥ï¼é£å°ä¼æ大å°ä¿è¿ç产ååé ï¼å¹¶ä¸å¯¹æªæ¥ææ·±è¿çå½±åãè¯æ³ä¸ä¸ï¼å¦æä½ æä¸ç§ä¿®æ¹åé 置软件çè½åï¼å¹¶ä¸ä½ å¯ä»¥æä½ çä¿®æ¹éè¿ç¤¾åºç½ç«åäº«å ¶ä»äººï¼å ¶ä»äººç¢°å°åæ ·çé®é¢çè¯ï¼å°±å¯ä»¥åç §ä½ çæ¹æ³ãè¿ç§è½åå¨ç´§æ¥çæ åµä¸æ¯å¾éè¦çï¼ä½ ä¸å¿ çä¸å®¶æ¥ç»ä½ 解å³é®é¢ï¼ä½ èªå·±å°±å¯ä»¥å°è¯è§£å³è¿äºé®é¢ã说å°è¿éï¼ä½ æ没ææ³èµ·è´´å§ï¼æè 论åï¼è®ºåæå¾å¤ä¸ªæ¿åï¼ä¸åçé¢ååä¸åçæ¿åï¼åå¦ä½ æ³rootææºï¼ææºè¶ç±ï¼æ解é¤ææºååçéå¶ï¼è·åææºçç¨æ·æé«æéï¼ä»¥å®ç°å¯¹ææºçæç§æ§å¶ï¼ï¼ä½ å¯ä»¥å°è®ºåä¸rootæ¿åæ¾çæ¡ï¼è¿ç§å½¢å¼å¯è°è·åå¤æå°çæ¯ä¸æ ·çãå¦æä½ å¯¹ä½ çææºæè çµèææ´æ·±å ¥çäºè§£ï¼ä½ å¯ä»¥éè¿ç¼ç¨æ¹åä½ çè¾å ¥æ³ï¼æè æ¹åä½ çæ¾ç¤ºå¨å·æè²ççï¼è¿äºé½æ¯å¯¹ä½ çæ´»æ帮å©çãåå¤å¨è¿éå°±æ¯æ³è¾¾å°è¿ç§ç¶æï¼ç®åç¹è¯´ï¼äººäººé½å¯¹è®¡ç®æºæä¸å®çäºè§£ï¼ä¸é½æå¤ç计ç®æºé®é¢çè½åã
为äºå®ç°è¿ä¸ªç®æ ï¼ä½è å¶å®äº5年计åï¼è¿ä¸ª5年计åå¦ä¸ï¼
5年计å循åºæ¸è¿ï¼ç±æµ å ¥æ·±ãå¹´3æï¼ç¾å½å½é²é¨å¯¹æ¤è¿è¡äºååºï¼åææ¨æ¬¾ç»ä»ãä½è ç5年计åå¨å¹´åºå¼å§å®æ½ï¼è½ç¶æ³æ¨è¿5å¹´ï¼ä½æ¯åªæ¶å°1å¹´çèµéæ¯æãä¸è¿ï¼ä½è è¿æ¯æ²¡ææ¾å¼è¿ä¸ªé¡¹ç®ï¼ä¸ç´æ¨è¿ï¼ç´å°ä»ä¸ååä¸pythonçå·¥ä½ãå½æ¶ç¾å½å½é²é¨å¯¹ä»ä»¬æä¾äºå¤å°èµéå¢ï¼æ没çå°å®æ¹å ¬å¼çæ°æ®ãå¹´ææ¥é称ï¼DARPAåContinuum Analyticsæä¾3ç¾ä¸ç¾å çæ¯æï¼è®©è¯¥å ¬å¸ç»pythonå¼åæ°æ®å¤ç以åæ°æ®å¯è§åå·¥å ·ãå ·ä½æ°åæ¯å¦å¯é ï¼è¿ä¸ªå°ä¸æ¸ æ¥ï¼ä½ç®¡ä¸çª¥è±¹ï¼å¯è§ç¾å½å½é²é¨å¯¹è¯¥é¡¹ç®è¡¨ç¤ºè®¤å¯ï¼å¹¶æä¾äºèµéæ¯æãContinuum Analyticsæä¸ä¸ªæ¯è¾æåçå·¥å ·ï¼å«Anacondaï¼Anacondaå¯ä»¥ç解为æ¯python + åç§ç§å¦è®¡ç®åºçå·¥å ·ç®±ï¼Anacondaå®ç½æè¿ä¹ä¸å¥è¯
ç¿»è¯ä¸ºâContinuum AnalyticsçAnacondaæ¯ä½¿ç¨pythonçãé¢å çå¼æºç§å¦è®¡ç®å¹³å°ï¼æ们èµäºé£äºæ£å¨æ¹åä¸ççäººè¶ è½åãâ
å¨æ¥èµæçæ¶åï¼æåç°äºä¸ä¸ªwiki论å, 该论å对该项ç®è¿è¡äºè¯ä»·ï¼è®ºåååºäºè¯¥é¡¹ç®æåçå°æ¹å失败çå°æ¹ï¼ä»¥åä¸äº ç¤¾ä¼ äººå£«ççæ³ã论åè¿æ ·æ»ç»éï¼è¿ä¸ªé¡¹ç®æåçå°æ¹å¨äºï¼
è¿ä¸ªé¡¹ç®å¤±è´¥çå°æ¹å¨äºï¼
åæ³èªå·±åå¦pythonçæ¶åï¼æè§å¾è¿ä¸ªæ»ç»æ¯å¾å ¬æ£çãpythonç¡®å®å®¹æå ¥é¨ï¼æç¼ç¨åºç¡ç人å¯è½åªéè¦ä¸ä¸ªææå°±è½ææ¡pythonçä¸äºåºæ¬è¯æ³ãç¸æ¯Cè¯è¨ï¼python对äºåå¦è æ¯å¾å好çï¼å¾å®¹æ让人ä¸æãä½æ¯ï¼è¦æ·±å ¥ç解pythonï¼å¹¶æ²¡æè¿ä¹ç®åï¼éè¦è±å¾å¤æ¶é´å»ç£¨ç»ãæ¥æä¸ä¸ªä½¿ç¨pythonç项ç®ï¼ä½ éè¦è±ä¸äºæ¶é´ç²¾åå»çæï¼å»æ¸ééé¢çé»è¾ï¼è¿å¯¹äºåå¦è æ¥è¯´ï¼æ¯æ æ³é¿å çã 对äºä¸ä¸ªç¨åºåæ¥è¯´ï¼ä½è è½æ³è±¡å°ä»¥å计ç®æºçæ®ååºç¨ï¼ä»¥åç¨æ·ç认ç¥æ°´å¹³ï¼è¿æä»è½å¤åä»ä¹ï¼éè¿ä»ä¹æ¥å®ç°ï¼è½æè¿äºè¿å¤§çæ±è´ï¼è¿æ¯é常ä¸å®¹æçã西æ¹ä¸çç»å¸¸è¯´å°âchange the worldï¼make the world a better placeâï¼ä½è ä¹ç¡®å®åå°äºï¼ä»è®¾è®¡çpythonå¨è®¡ç®æºä¸çéæ®æ¼è ä¸ä¸ªé常éè¦çè§è²ãå¦æéè¿ ç§æ è½å¤æ¹åä¸çï¼é£ä¹pythonå°±æ¯æ¹åä¸ççå ¶ä¸ä¸æ¥ã-å¹´ï¼ç¾å½å¯¹ ç§æ å ¬å¸æ¯æ¿çæ¶æãææ¯æ©æ£ï¼è¿æé´æ¶ç°äºå¦IBMãHPãæç§ç ç§æ å ¬å¸ï¼å¤§å®¶çç¥ç微软åè¹æé½æ¯å¨è¿æé´ä¸å¸çãpythonå¯ä»¥è¯´æ¯è¿ä¸ª ç§æ è¿å¨çä¸ä¸ªç¼©å½±ï¼å¨ ç§æ 浪潮çæ¨å¨ä¸ï¼pythonå¾å°äºé¿è¶³çåå±ã
å¾å¤ ç§æ æå·¥ä¸ç¸å ³çç½ç«ä¼æ ¹æ®å½å¹´ç¼ç¨è¯è¨çæµè¡åº¦åä¸æåï¼å®ä»¬ä¼ååºå½å¹´å¨ä¸çæå欢è¿çç¼ç¨è¯è¨ãå ¶ä¸ï¼IEEE Spectrum å TIOBE ç年度ç¼ç¨è¯è¨æ¯pythonï¼å¦ææè¿æ²¡è®°éçè¯ï¼TIOBEç年度ç¼ç¨è¯è¨ä¹æ¯pythonãå¯è§pythonæ¯é常å欢è¿çï¼ç¨ç°å¨çè¯è®²ï¼å°±æ¯âç½çº¢âç¼ç¨è¯è¨ãç°å¨ï¼å¾å¤è®¡ç®è®¾å¤ä¸é½æpythonç身影ï¼å°å°æºè½å®¶å± ãææºãæºè½æ表ï¼å¤§å°éçµè½¦ãå·¥æ§è½¦åºãçè³èªå¤©é£æºé½æpythonç身影ãä½ å¯è½å¨æµè§ç½é¡µçæ¶åï¼å³ä¸è§å¼¹åºä¸ä¸ªâ7天pythonå ¥é¨âç广åï¼å¯è§pythonç°å¨è¿æ¯æå¾å¤éæ±ï¼å 为æéæ±ï¼æ以ææ人å»æ广åï¼æä¼æ人å»æ¾å¹è®æºæã
ä½è å¨ç»ç¾å½å½é²é¨çææ¡ä¸åå°ï¼ä»æ³è·é«ä¸æ大å¦å±å¼åä½ï¼è®¾è®¡ä¸äºpythonç课ç¨ï¼é对ä¸å年级ï¼è®¾è®¡ä¸åæ°´å¹³ç课ç¨ãç°å¨æ¥çï¼ä»ç¡®å®æ¯åå°äºï¼ç°å¨åä½ãå¯ææ ¹å¤§å¦çæåé åç大å¦ï¼é½æpython课ç¨ï¼pythonå¨è¿äºå¤§å¦çCSï¼è®¡ç®æºç§å¦ï¼è¯¾ç¨ä¸åºç¨é常广æ³ï¼å¯ä»¥è¯´æ¯ä½ä¸ºCS导论çä¸ä¸ªæå¦å·¥å ·ãå¨ä¸äºæ¯è¾é«çº§ç课ç¨ï¼æ¯å¦æ°æ®ç§å¦ã人工æºè½çé½å¯ä»¥çå°pythonç身影ï¼è¿æ¯å 为å¦æ¯ç以åå·¥ä¸ç为pythonæä¾äºä¸äºå¤çç§å¦è®¡ç®å大æ°æ®çå·¥å ·ï¼è¿ä¹å½åäºç¾å½å½é²é¨çæ¯æãç¾å½æ许å¤ç¼ç¨å¤ä»¤è¥ï¼é对ä¸åå¹´é¾æ®µæä¸åç课ç¨ï¼å¹¶ä¸ä¹æ许å¤æ¯æpython代ç çç¼ç¨ç«èµãGoogleå¨courseraä¸æä¸ä¸ªé¢ååå¦è ç课ç¨ï¼è¯¥è¯¾ç¨å« Google IT Automation with Pythonï¼å®æ课ç¨å¤§çº¦éè¦ 8 个æï¼è¯¾ç¨å»ºè®®æ¯å¨è±5å°æ¶å¦ä¹ ï¼è¯¾ç¨ç»æåå°±å¯ä»¥è·å¾Googleé¢åçè¯ä¹¦ãå¯è§ï¼ä¸ç®¡æ¯å·¥ä¸çï¼è¿æ¯æè²çï¼é½å¯¹pythonæä¸åç¨åº¦çæ¯æãè¿éæ个å²ï¼ç¬¬ä¸ççGoogleæç´¢å¼æè¿æ¯ç¨pythonåçï¼ä½è ä¹å¨Googleå·¥ä½äºä¸æ®µæ¶é´ã
ç°å¦ä»ï¼æ¯éä¸æ®µæ¶é´ï¼å°±æä¸ä¸ªPyConæ´»å¨ï¼è¿ä¸ªæ´»å¨æ±èä¸çåå°çå¼åè ï¼æ¯å¹´é½æå¼åè æ¥å±ç¤ºä»ä»¬ä½¿ç¨pythonçæåæ¡ä¾ï¼æè 表达èªå·±å¯¹pythonçæ°åè½æè 缺é·ççæ³ãå¯è§ï¼pythonç¨æ·ç¤¾åºä¸ç´é½æ¯å¾æ´»è·çãè¿è®©ææ³å°äºææ°è½æº 汽车 ï¼è¯¥ 汽车 ç¨æ·æå¾é«çç²æ§ï¼æä¸ä½è½¦ä¸»è·æ说è¿ï¼ä»ä»¬æä¸ä¸ªå¾®ä¿¡ç¾¤ï¼éé¢æ该æ°è½æº 汽车 çé«ç®¡ï¼å¾å¤è½¦ä¸»ä¹æå¨éé¢æåºé®é¢ï¼æè æ建议ï¼å 为è¿äºé«ç®¡ä¼å¯¹é®é¢æè 建议ååºç¸åºçåé¦ãç¨æ·æ¿æææè§ï¼äº§åç»çæ¿æ广å¼è¨è·¯ï¼é纳å¤æ¹å»ºè®®ï¼å®å±ä¸æãpython社åºä¹å·®ä¸å¤å¦æ¤ã
å å¹´åï¼ä½ æ¯å¦çè¿ä¸ä¸ªæ°é»ï¼ã人工æºè½âç½çº¢âç¼ç¨è¯è¨Pythonè¿å ¥å±±ä¸å°å¦è¯¾æ¬ãï¼è¿æ¯å¹´æ¾æ¹ç½çä¸åæ°é»ï¼éé¢è®²äºpythonè¿å ¥äºå±±ä¸çå°å¦å 年级ææï¼ä½ä¸ºä¸é¨âç½çº¢âç¼ç¨è¯è¨ï¼å®æ¯å¦éåä½é¾å¦çï¼è¿ä¸ªåæ¯æ²¡ç»è¯´ï¼ä½æ¯å¯è§å½å æäºå°æ¹æ¯æç¼ç¨ä½ä¸ºä¸ç§æ¯è¾åºç¡çè½åæ¥èéãpythonå¾ä½é¾é¶æ®µæ¸éæ¯å¦åéå¢ï¼æå¨ç¿»èµæçæ¶åç¥å°é©å½é«ä¸½å¤§å¦çä¸ç¯è®ºæï¼è®ºæ讲述å°å¦çå¨å¦ä¹ pythonçè¿ç¨ä¸ä¼ç¢°å°ä¸äºå°é¾ï¼æ¯å¦ç»å¸¸å°æäºä¸äºæ¬å·ï¼ç»å¸¸æ¼éåè¯ï¼ç»å¸¸ç¢°å°è¯æ³é误ï¼ä»¥å对è¿äºç°è±¡ççæ³ãè¿æï¼å京å¸è大å¦æä¸ç¯æ¥éï¼è®²è¿°äºä¸å¦çå¦ä¹ å¨å¦ä¹ pythonæ¶ï¼éç¨é¢åé®é¢çå¦ä¹ 模å¼ï¼æç解æ¯case by caseçæå¦æ¨¡å¼ï¼è¿ç§æ¨¡å¼æå©äºå¦çå¹å »å¦çç计ç®æºæç»´ï¼ä»¥å帮å©ä»ä»¬ç解ä¸äºè®¡ç®æºç¸å ³çæ¦å¿µï¼è§£å³è®¡ç®æºç¸å ³çé®é¢ã
pythonæ¯å¦éåä½é¾å¦çå¢ï¼æè§å¾è¿ä¸ªæ¯å¼å¾è®¨è®ºçè¯é¢ãæåè¿è¦é®ä½ ä¸å¥ï¼ä½ ä¼è®©ä½ çå°å©å¦ä¹ pythonä¹ï¼ä»ä»ä¹æ¶åå¼å§å¦å¢ï¼ä½ çå¨å 为ä¸ç¥éæå¤å°ä¸ªæ¬å·åå大åæ¶ï¼ä½ è½å¸®å¾ä¸å¿ä¹ï¼ä½ å°æ¶åéè¦ä¸é¨è¯·ä¸ä¸ªç¨åºåæ¥ç»ä½ çå¨å家æä¹ï¼
-
pythonæ¯ä¸ªä»ä¹ä¸è¥¿Pythonæ¯ä¸ç§è·¨å¹³å°ç计ç®æºç¨åºè®¾è®¡è¯è¨ãæ¯ä¸ä¸ªé«å±æ¬¡çç»åäºè§£éæ§ãç¼è¯æ§ãäºå¨æ§åé¢å对象çèæ¬è¯è¨ãæå被设计ç¨äºç¼åèªå¨åèæ¬ï¼shellï¼ï¼éççæ¬çä¸ææ´æ°åè¯è¨æ°åè½çæ·»å ï¼è¶å¤è¢«ç¨äºç¬ç«çã大å项ç®çå¼åã
Pythonçåå§äººä¸ºè·å °äººåå¤Â·èç½èå§ï¼GuidovanRossumï¼ãå¹´å£è¯èæé´ï¼å¨é¿å§æ¯ç¹ä¸¹ï¼Guido为äºæåå£è¯èçæ 趣ï¼å³å¿å¼åä¸ä¸ªæ°çèæ¬è§£éç¨åºï¼ä½ä¸ºABCè¯è¨çä¸ç§ç»§æ¿ã
ä¹æ以éä¸Pythonï¼å¤§èèçææï¼ä½ä¸ºè¯¥ç¼ç¨è¯è¨çååï¼æ¯åèªè±å½ä¸çºªå¹´ä»£é¦æççµè§åå§ãèæï¼æ´¾æ£®çé£è¡é©¬æå¢ãï¼MontyPythonï¼sFlyingCircusï¼ã
æ©å±èµæï¼
pythonä¸æå°±æ¯èèçææãå¨è®¡ç®æºä¸ï¼å®æ¯ä¸ç§ç¼ç¨è¯è¨ãPythonï¼è±è¯åé³ï¼ï¼?pa?θ?nï¼ï¼ï¼æ¯ä¸ç§é¢å对象ã解éå计ç®æºç¨åºè®¾è®¡è¯è¨ï¼ç±GuidovanRossumäºå¹´åºåæï¼ç¬¬ä¸ä¸ªå ¬å¼åè¡çåè¡äºå¹´ãPythonè¯æ³ç®æ´èæ¸ æ°ï¼å ·æ丰å¯å强大çç±»åºã
å®å¸¸è¢«æµç§°ä¸ºè¶æ°´è¯è¨ï¼å®è½å¤æç¨å ¶ä»è¯è¨å¶ä½çåç§æ¨¡åï¼å°¤å ¶æ¯Cï¼Cï¼ï¼ï¼å¾è½»æ¾å°èç»å¨ä¸èµ·ã常è§çä¸ç§åºç¨æ å½¢æ¯ï¼ä½¿ç¨Pythonå¿«éçæç¨åºçååï¼ææ¶çè³æ¯ç¨åºçæç»çé¢ï¼ï¼ç¶åå¯¹å ¶ä¸æç¹å«è¦æ±çé¨åï¼ç¨æ´åéçè¯è¨æ¹åã
æ¯å¦3D游æä¸çå¾å½¢æ¸²æ模åï¼æ§è½è¦æ±ç¹å«é«ï¼å°±å¯ä»¥ç¨C++éåã1åå±åç¨ç¼è¾èªä»ä¸çºªå¹´ä»£åPythonè¯è¨è¯çè³ä»ï¼å®éæ¸è¢«å¹¿æ³åºç¨äºå¤çç³»ç»ç®¡çä»»å¡åWebç¼ç¨ãPythonå·²ç»æ为æå欢è¿çç¨åºè®¾è®¡è¯è¨ä¹ä¸ã
åèèµæï¼
ç¾åº¦ç¾ç§-Python
Python å¨ç¼ç¨è¯è¨ä¸æ¯ä»ä¹å°ä½ï¼ä¸ºä»ä¹å¾å¤å¤§å¦ä¸æ Pythonï¼pythonçå°ä½å¾é«ï¼ç®åæ¯ä¸ç第5大ç¼ç¨è¯è¨ããä½æè§å¾å¤§å¦ä¸æpythonï¼å ¶å®æ¯æ£ç¡®çã
Pythonå¨è¯çä¹åï¼åªæ¯ç¨æ¥å¨Linuxä¸ç»Perlåshellåè¡æ¥ç¨çâè¶æ°´âï¼èä»å¤©å·²ç»æ为äºä¸»æµçç¼ç¨è¯è¨ï¼è½è·å¾ä»å¤©çå°ä½ï¼å½ç¶å ·å¤è¯¸å¤ä¼å¿ãããæ¯å¦æ°å¦è¿ç®ç¸å ³çåç§åºï¼ç¬è«ï¼ççãããä½è¿é½ä¸æ¯å¯¼è´Pythonæµè¡çææ ¹æ¬åå ã
æ没ææ¯Pythonè¿ç®æ´å¼ºçè¯è¨ï¼å¤å¾æ¯
æ没ææ¯Pythonç¬è«æçæ´é«çè¯è¨ï¼ä¹ä¸å°
æä»¥å ¶å®å¹³æ¥ééå£éæ¥çç§ç§ä¼å¿ï¼å¹¶ä¸æ¯ä¸å¯æ¿ä»£çããè¿äºä¼å¿ï¼å¾å¤è¯è¨é½å ·å¤ãå°±æ¯å¦perlï¼erlangï¼Juliaçè¯è¨ï¼å ¶å®ç¨æ¥åè¿ç®æç¬è«æ¯Pythonæ´å¼ºï¼ä½ä¸ºä»ä¹è¿äºè¯è¨å´æµè¡ä¸èµ·æ¥ï¼
说å°åºï¼Pythonæåçç§è¯åªæä¸æ¡ï¼å ¶å®å°±æ¯å¨åè½åºæ¬å¤ç¨çåæä¸ï¼æ¯å ¶ä»è¯è¨ç®åãèæ¯Pythonç®åçè¯è¨ï¼åè½åä¸å¤å ¨é¢ï¼æ¯å¦Luaï¼Javascriptï¼Rubyè¿äºè¯è¨æ¯Pythonæ´ç®åï¼ä½å¾å¾åªéåä¸ä¸¤ä¸ªé¢åçå·¥ä½ï¼èæ æ³é¢é¢ä¿±å°ã
Pythonå¯ä»¥æä¾çè¿äºåè½ï¼å¯¹äºéä¸ä¸ç¨åºåæ¥è®²ï¼å·²ç»æ¾å¾é常强大äºããä½å¯¹äºä¸ä¸ç¨åºåæ¥è¯´ï¼Pythonæ大çä½ç¨ï¼å ¶å®ä¹åªæ¯ç¨æ¥âå·æâèå·²ãå 为ç¸æ¯JAVAæC#è¿ç§å·¥ä¸çº§çç¼ç¨è¯è¨æ¥è®²ï¼Pythoné¤äºå ¥é¨ç®åä¹å¤ï¼å¹¶æ ä»»ä½ä¼å¿å¯è¨ãèPythonçå¨æè¯è¨ç¹æ§ãä¸å©äºç»´æ¤ç缺ç¹ï¼æ为äºéå¶å®è¿åæ·±å±å¼åçé大缺é·ã
èå¦æçç»ææ¡JAVAæC#ä¸çä»»ä½ä¸é¨ï¼æ³å©ç¨é²æä¹ä½å¦ä¹ ä¸ä¸Pythonï¼çå 个æ¡ä¾ä¾¿å¯ä»¥å ¥é¨ï¼å ä¹ä¸éè¦ä¸é¨å¦ä¹ ã
å¦æä½ å¹¶ä¸ä»¥æ为ä¸ä¸ç¨åºåå为ç®æ ï¼é£ä¹ä»¥Python为主ï¼æ¯å¯ä»¥çãä½è¥æ³é ç¼ç¨å »å®¶ç³å£ï¼éæè¯è¨ææ¯éä¸ä¹éã
ä½å¦ææ¯è®¡ç®æºä¸ä¸çè¯ï¼ä» ä» å¦Pythonï¼ä¼¼ä¹å°±æç¹å¯¹ä¸èµ·âç§çåºèº«âç称å·äºããããå¦ç们è±çæè´µçå¦è´¹ï¼æ¶èåå¹´å é´ï¼å´åªå¦ä¸ªPythonï¼å²ä¸æ¯è¯¯äººåå¼ï¼
å°±åä½ è¥æ¥èæå½±ä¸ä¸ï¼èå¸åºè¯¥æä½ ä½¿ç¨ååï¼èä¸æ¯æä½ ä½¿ç¨ææºæå头ã
ç»è¯ï¼ä»¥ä¸å°±æ¯é¦å¸CTOç¬è®°ä¸ºå¤§å®¶ä»ç»çå ³äºç¾å½å¤å°å¤§å¦ä½¿ç¨pythonçå ¨é¨å 容äºï¼å¸æ对大家ææ帮å©ï¼å¦æä½ è¿æ³äºè§£æ´å¤è¿æ¹é¢çä¿¡æ¯ï¼è®°å¾æ¶èå ³æ³¨æ¬ç«ã
druid源码学习笔记9_testOnBorrow&testOnReturn&testWhileIdl
druid源码中,关于testOnBorrow、testWhileIdle和testOnReturn的属性配置值得重点关注。在1.2.9版本后,这些属性的默认值与早期wiki中的记录有所不同。testOnBorrow的默认值从true变为false,而testWhileIdle的默认值则从false变为true。这表明代码在年后可能进行了更新,但wiki尚未同步更新。 testOnBorrow主要在getConnectionDirect方法中起作用,当设置为true时,获取连接后会执行validationQuery检查连接是否可用。如果连接不可用,将重新获取。而testWhileIdle则在连接空闲时间达到timeBetweenEvictionRunsMillis时执行验证,同样用于检查连接状态。 testWhileIdle与testOnBorrow互斥,如果两者都为true,仅执行testOnBorrow。计算空闲时间的规则涉及checkExecuteTime、lastKeepTimeMillis和当前时间的比较。 testOnReturn属性在DruidPooledConnection#close()方法,即归还连接时被调用。当设置为true时,回收连接后会检查其状态,如连接未关闭,会执行validationQuery。如果连接不可用,会关闭并计数,否则继续归还操作。 总结如下:testOnReturn在连接归还时检查,默认为false。
testOnBorrow和testWhileIdle在连接借用时检查,早期testOnBorrow为true,testWhileIdle为false,但新版本可能出于性能考虑进行了调整。
玩客云折腾记录(一):编译 ArmBian 系统
本文将详细介绍如何从零开始编译 Armbian 系统,适配特定设备的代码来源,并涉及对玩客云小设备的刷机过程。此教程旨在为后续的折腾活动做前期准备工作。
在探索过程中,我发现树莓派的硬件虽小巧且资源丰富,但其价格几乎与我之前的裸机NUC相近。寻求性价比更高的方案,目光转向了搭载 Amlogic S 芯片的玩客云设备。此设备性能不错,具备千兆网口与金属外壳,且运行过程中温度不高,日常功耗低。
玩客云采用的芯片方案与 Hard Kernel 几年前的开发板 ODROID-C1+ 相似,性能约为树莓派 3B 的两倍。相比树莓派 3,一套 元的小主机在性价比上高出许多。
系统选择方面,Linux 操作系统提供了无限的可能性。玩客云搭载的芯片方案允许我们使用 ArmBian 系统。深入研究后发现,Armbian 代码起源于 年,自 年爆发式成长,至今已支持近 种不同设备的适配。
在此过程中,多名开发者通过个人贡献,将 Armbian 适配到多种硬件上。例如,一名战斗民族的网友在 年为多种设备做适配,并在 年进行重构,专注于电视盒子。而其他开发者则对系统进行了优化和内核升级。
若希望使用新版本的 Armbian 系统,可以通过整合不同代码分支,合并至最新版本的源码中。在进行编译时,需确保下载的代码源代码量适中,预留足够的磁盘空间。执行构建命令后,即可在输出目录中找到新鲜出炉的镜像文件。
刷机过程相对简单,无需购买特殊装备。采用网友的无TTL线刷机方案,整个流程大约需要 至 分钟。刷机完毕后,系统将自动引导,无需进行二次刷机。若遇到问题,如刷入引导失败,可尝试重启设备或使用直接安装的 Windows 系统进行刷机。
总的来说,本文提供了一个从零开始编译 Armbian 系统,适配玩客云设备的过程,以及如何进行刷机的具体步骤。通过整合开发者贡献的代码,可以构建出满足特定需求的系统镜像。后续文章中,将探讨如何利用这台设备进行有趣的实验,如异地组网、电子笔记服务器、密码记录本与低功耗监控探针。