1.å端å¼å常ç¨å好ç¨çå 个软件
2.xxjob有哪几种开发模式?
3.make 的源码执行过程与条件判断
4.合集系列1类似GitHub的10个代码托管网站推荐,你目前在使用哪一个?
å端å¼å常ç¨å好ç¨çå 个软件
æ£æè°â工欲åå ¶äºå¿ å å©å ¶å¨âï¼ä¸ååæ ¼çWebå端å¼åå·¥ç¨å¸èªç¶ä¼ç¨å°ä¸å°è½ä½¿å ¶å·¥ä½é«æçå·¥å ·ãä¸é¢ï¼å°±ç»å¤§å®¶å享Webå端å¦ä¹ éè¦äºè§£çå款HTML5å¼åå·¥å ·ã1ãLungo
Lungoæ¯ä¸æ¬¾åºäºHTML5çå¼åæ¡æ¶ï¼ä¸ä¸ºæ³è¦è®¾è®¡ãæ建åå ±äº«è·¨è®¾å¤åºç¨çå¼åè èåå¤ãæ¯æå¼æ¾çWebæ åï¼å¦HTML5ãCSS3åJavaScriptï¼æ¯æææºãçµè§ä»¥åæ¡é¢è®¾å¤ãæ¥æ强大çJavaScript APIï¼å¼åWebAPPåºç¨æå¾å¤ç§æ¹å¼ï¼èä¸æ¯ä¸å³çä¼åãLungoæä¾äºä¸ä¸ªå¼ºå¤§çAPIï¼è¿æ ·ä½ å¯ä»¥å®å ¨ææ§èªå·±çWebAPPåºç¨ç¨åºã
2ãAnimatron
Animatronæ¯ä¸æ¬¾ç®åèå强大çå¨çº¿å·¥å ·ï¼éè¿å®ï¼ä½ å¯ä»¥å建åºä»¤äººæå¹ççHTML5å¨ç»åäºå¨å 容ã使ç¨é常ç´è§çAnimatronç¼è¾å¨å»è®¾è®¡ååå¸å®ç¾ç移å¨äº§åï¼åæ¶ä¹å¯ä»¥å°å¤ææ¾ççµå½±åä¿¡æ¯å¾è¡¨çï¼ä»æ¡é¢æµè§å¨å°ç§»å¨è®¾å¤ï¼æ éç¼ç ï¼æè§å³æå¾ã
3ãDCloudHBuilder
DCloudHBuilderï¼åºäºHTML5å¼åå·¥å ·æ¯å½åæå¿«çHTMLå¼åå·¥å ·ï¼å¼ºå¤§ç代ç å©æå¸®ä½ å¿«éå®æå¼åï¼æå ¨çè¯æ³åºåæµè§å¨å ¼å®¹æ§æ°æ®è®©æµè§å¨ç¢çåä¸å头çï¼DCloud è¿æä¾äºç«¯æå æå¡ï¼å¯ä»¥è®©å¼åè ç´æ¥å¨äºç«¯çæ .ipa æ .apk å®è£ å ä¾é¨ç½²è°è¯ã
4ãmobl
mobl æ¯ä¸ä¸ªæ°çå¼æºçç¼ç¨è¯è¨ï¼ä¸»è¦ç¨äºå éææºåºç¨çå¼åï¼mobl å¯æ¹ä¾¿æ建ææº Web åºç¨ç¨åºï¼å æ¬ iOSãAndroid åå ¶ä»æ¯æ HTML5 ææ¯çææºãMobl使ç¨ä¸ç§ä¸JavaScripté常类似çèæ¬è¯è¨å®ç°äºéæç±»åçæ¨æè¯è¨ã该è¯è¨æ¥æ以ä¸é¡¶çº§ç»æï¼ å®ä½ï¼entitiesï¼ãç±»åï¼typesï¼ãå½æ°ï¼functionsï¼ãæ§ä»¶ï¼controlsï¼ãå±å¹ï¼screensï¼ãæ ·å¼ï¼styles ï¼å设å¤ï¼servicesï¼ãå®ä½æ¯å¨æ¬å°åå¨ä¸æä¹ åçæ°æ®å ç´ ï¼èç±»åæ¯ä¸ç§ä¾æ们使ç¨çä¸ç¨³å®çæ°æ®ãå½æ°ä¸é£äºå®ä¹å¨JavaScript以åè½å¤è°ç¨JavaScript代ç çè¯è¨ä¸çå½æ°ç±»ä¼¼çã
5ãInitializr
Initializr æ¯å¶ä½ HTML5 ç½ç«æ好çå ¥é¨è¾ å©å¼åå·¥å ·ï¼ä½ å¯ä»¥ä½¿ç¨æä¾çç¹è²æ¨¡æ¿å¿«éçæç½ç«ï¼ä¹å¯ä»¥èªå®ä¹ï¼Initializr ä¼ä¸ºä½ çæ代ç ç®æ´çå¯å®å¶çç½é¡µæ¨¡æ¿ã
6ãWebStorm
WebStormæ¯ä¸æ¬¾å¼ºå¤§çHTML5/JavaScriptWebå端å¼åå·¥å ·ï¼è¢«å¹¿å¤§JSå¼åè èªä¸ºâWebå端å¼åç¥å¨âã
WebStorm 8å ¨æ°ç¹æ§ä¸å æ¬å¯¹AngularJSçæ¯æï¼è½å¤é«æåç¡®å°æºè½æç¥Angularè¯æ³ãæ令ãWebStormè¿å®ç¾æ¯æSpy-jsï¼å并äºè¿æ¬¾JavaScriptè°è¯å©å¨ï¼å¤§å¤§æé«äºå¼åè 们çå·¥ä½æçã
7ãNotepad++
Notepad++ç¨åºåå¿ å¤çææ¬ç¼è¾å¨ï¼è½¯ä»¶å°å·§é«æï¼æ¯æç§ç¼ç¨è¯è¨ï¼éåC,源码C++ ,Java ,C#, XML, HTML, PHP,JS çï¼æ¨èåä½ä¸è½½ä½¿ç¨ãNotepad++ å¯å®ç¾å°å代微软çè®°äºæ¬ã
8ãDreamweaver
Dreamweaver æ¯ä¸ç顶级软件ååAdobeæ¨åºçä¸å¥æ¥æå¯è§åç¼è¾çé¢ï¼ç¨äºå¶ä½å¹¶ç¼è¾ç½ç«å移å¨åºç¨ç¨åºçç½é¡µè®¾è®¡è½¯ä»¶ãç±äºå®æ¯æ代ç ãæåã设计ãå®æ¶è§å¾çå¤ç§æ¹å¼æ¥åä½ãç¼ååä¿®æ¹ç½é¡µï¼å¯¹äºå级人åï¼ä½ å¯ä»¥æ éç¼åä»»ä½ä»£ç å°±è½å¿«éå建Web页é¢ãå ¶æçç代ç ç¼è¾å·¥å ·æ´éç¨äºWebå¼åé«çº§äººåçåä½ï¼
9ãEclipse
Eclipseçæ¬èº«åªæ¯ä¸ä¸ªæ¡æ¶å¹³å°ï¼ä½æ¯ä¼å¤æ件çæ¯æ使å¾Eclipseæ¥æå ¶ä»åè½ç¸å¯¹åºå®çIDE软件å¾é¾å ·æççµæ´»æ§ã许å¤è½¯ä»¶å¼åå以Eclipse为æ¡æ¶å¼åèªå·±çIDEãEclipseæåæ¯ç±IBMå ¬å¸å¼åçæ¿ä»£åä¸è½¯ä»¶Visual Age for Javaçä¸ä¸ä»£ideå¼åç¯å¢ï¼å¹´æè´¡ç®ç»å¼æºç¤¾åºï¼ç°å¨å®ç±éè¥å©è½¯ä»¶ä¾åºåèçEclipseåºéä¼ï¼Eclipse Foundationï¼ç®¡çã
ãDevExtreme
DevExtremeæ¯ä¸ä¸ºä½ ç移å¨ä¸çç²¾å¿åå¤çï¼ä¸ä¸ªè·¨å¹³å°å¼åçHTML5/JSæ¡æ¶ï¼å¯ä»¥æ建iOSãAndroidãTizenåWindows Phone 8åºç¨ç¨åºï¼æ¯Visual Studioå¼å人åå¼å跨平å°ç§»å¨äº§åçä¼éå·¥å ·ã
以ä¸å°±æ¯ä¸ºå¤§å®¶å享çå款HTML5å¼åå¿ å¤çå·¥å ·ï¼ç¸ä¿¡è¿äºå·¥å ·ä¸å®ä¼è®©ä½ å¸®ä½ å¨ä»äºWebå端å¼åè¿ç¨ä¸æé«æçï¼æå¼ä¸ææ°ç大é¨ã
xxjob有哪几种开发模式?
XXL-Job支持两种模式的任务开发,BEAN和GLUE。源码GLUE是源码在WebIDE上进行开发,源码维护在调度中心,源码支持Java、源码微信样式源码Shell、源码Python、源码NodeJS、源码PHP、源码PowerShell。源码
BEAN模式开发更多的源码还是在业务系统中
BEAN模式有两种方式:类形式、方法形式。源码
其中类型是源码就是继承IJobHandler,实现其中任务方法,源码并注入到执行器容器内即可。
一个任务一个类,无需框架,直接用main函数调用即可。
make 的执行过程与条件判断
通过在 Terminal 中输入以下命令可以将本课程所涉及的所有源代码下载到Linux环境中,作为参照对比进行学习。
命令执行后 WebIDE 的工作区中将会出现一个名为make_example-master 的文件夹。
本章节的myeclipse配置查看java源码源代码位于/home/project/make_example-master/chapter3 目录下,请在 Terminal 中通过 cd 命令切换至该目录后再进行实验学习。
编写 makefile 文件内容如下:
在 makefile 文件中我们定义了两个变量vari_a 与 vari_b,同时我们在执行规则 all 时将他们的值打印输出,现在执行 make 命令,观察输出结果。
新增一个文件inc_a,在文件中声明一个变量 vari_b 值为 「vari b from inc_a」。 提供的源代码中已有此文件,内容如下:
修改 makefile 文件,在文件的最后一行通过 include 将 inc_a 包含到 makefile 中。
执行make 命令观察输出结果。
可以发现vari_b 的值被修改了。
我们知道make 是按照顺序一行行读入 makefile。 前面介绍make 的第一阶段是读入所有 makefile 文件,include导入的文件以及环境变量指定的文件。所以解析新修改的 makefile 时,inc_a 应该在第一阶段被解析完毕,所以 vari_b 变量就被 inc_a 修改掉了。
由此说明文件的处理顺序与include 指示符在 makefile 中的位置无关。
到目前为止,我们已经知道 makefile 中的指令都是 shell 指令,那么make 是php登陆系统源码怎样执行目标对应指令呢? 答案还是 shell。make 会调用 shell 去执行每一条指令。需要注意的是,即便在同一个目标下,每一条指令都是相互独立的。 也就是说 make 会分别调用 shell 去执行每一条指令,而非使用一个 shell 进程按顺序执行所有的命令。
使用cd 命令和 pwd 命令查看两条相邻的命令能否相互产生影响,由此来验证说法的正确性。 在提供的源文件代码中已经有 cd_test.mk 文件,内容如下:
从内容中我们可以知道all 规则是由三条命令构成的,其中 @pwd 表示打印当前绝对路径,但不要显示 pwd 命令,cd .. 表示回到上一层目录。 因此,若三条指令是在一个 shell 进程中顺序执行,那么命令的执行顺序是先打印当前目录的绝对路径,再返回上一层目录并打印上一层目录的绝对路径。若是三条指令是在三个不同的 shell 中执行的,则两次 @pwd 命令的执行结果将会是相同的。
现在执行下面的命令并观察输出结果。
Terminal 的输出结果如图:
说明三条命令是在三个不同的 shell 中执行的。
打印进程id确认指令会被不同的google浏览器 源码进程执行。 提供的源代码中已有用来测试的代码文件cmd_test.mk, 内容如下:
其中“$$$$”代表的是当前进程id。 所以cmd_test.mk的命令执行过程就是分别打印all目标下两条命令的进程id。 执行make -f cmd_test.mk进行测试:
可以看出两条命令输出的进程 id 是不同的
目标下的每一条命令都是通过不同的shell执行的。
有些状况下,用户希望能够使用cd 命令来控制命令执行时所在的路径,比如 cd 到某个目录下,编译其中的源代码,要实现该操作就必须在一行中写入多条指令。
先修改cd_test.mk文件,将三条指令都放在一行,并用“;”隔开。 请注意第三条“@pwd”的指令中,“@”符号要删掉,此符号只用于每一行的开头。 修改后的cd_test.mk内容如下:
执行以下命令:
Terminal 的输出结果如图所示:
说明这三条命令是在同一个进程中被执行的。
在同一行中书写多条指令是一件比较麻烦的事情,尤其是指令较长时,非常不方便阅读和修改。makefile 中可以使用反斜线“\”来将一行的内容分割成多行。 源文件中有一个multi_test.mk脚本,用于测试反斜线的jsp新闻管理系统源码作用,内容如下:
此文件将一条指令分割成 3 行,其中第 1 行和第 2 行组成一条完整的指令,内容与第 3 行指令相似。两条指令的作用也是打印当前执行进程的 id 号。 使用make -f multi_test.mk 命令执行此文件。
Terminal 的输出结果如图:
可以看出执行效果与修改后的cmd_test.mk 文件执行效果一致,说明反斜杠的确能起到连接多行指令的作用。
makefile 中的条件判断语句条件判断语句的基本格式如下:
其中TEXT-IF-TRUE 可以为若干任何文本行,当条件为真时它被 make 作为需要执行的一部分。
makefile 中有else 分支的条件判断语句格式如下:
其中make 在条件为真时执行 TEXT-IF-TRUE,否则执行TEXT-IF-FALSE。
ifeq 用于判断条件是否相等,可以支持以下几种格式:
❗ 注意:ifeq/ifneq 等关键字后面一定要接一个空格,否则 make 会因为无法识别关键字而报错!
提供的代码文件中已有eq.mk 文件,内容如下:
依次执行下面的命令:
Terminal 输出结果如图:
ifneq 支持的格式与 ifeq 相同,同样提供的代码文件中已有 neq.mk 文件,内容如下:
neq.mk 中的条件判断语句使用了 ifneq ... else ... endif 结构。 当 a 不为空时,b 的值与 a 相同,否则 b 为默认值 null。
依次执行下面的make 命令,打印输出 b 在各种情况下的值:
Terminal 输出结果如图:
ifdef 语句的语法格式如下:
它只会判断变量是否有值,而不关心其值是否为空。
现在我们测试ifdef 的用法,以及要怎样理解变量值为空和变量未定义的差别。 提供的源代码文件中已有测试需要的代码文件def.mk,内容如下:
def.mk 文件中先声明了一个变量 a,但并未给其赋值,即变量 a 未定义。 变量 a 又被赋给了变量 b,由于 a 是未定义变量,因此 b 为空值。 make 执行此文件时分别打印变量 a、b、c、d 的值。
现在执行下面的make 命令,观察输出结果。
Terminal 的输出结果如图:
可见对make 来说,它认为 a 属于未定义变量,b 则属于已定义变量。
ifndef语句的格式与 ifeq 相同,逻辑上与 ifeq 相反。 提供的源代码中包含了测试需要用到的代码文件 ndef.mk 文件,它的内容与 def.mk 相似:
现在执行下面的make 命令并查看输出结果。
Terminal 中的输出结果如图所示:
本章学习了make 执行的两个阶段,目标指令的执行细节以及 makefile 中条件执行语句的编写。
合集系列1类似GitHub的个代码托管网站推荐,你目前在使用哪一个?
码云(gitee.com)是开源中国社区团队推出的基于Git的快速、免费、稳定的在线代码托管平台,为开发者提供云端软件开发协作平台,支持个人、团队与企业代码托管、项目管理与协作。
Coding.net是一个云端开发平台,提供Git/svn代码托管、代码质量分析、在线WebIDE、项目管理、开发协作与社会化讨论功能,支持多成员协作,深度集成代码仓库操作,提供公有云与企业私有云服务。
BitBucket提供Mercurial和Git版本控制,支持免费账户与商业计划,包含不限数量私人存储库(每个账户最多5个用户),提供付费计划以支持更多用户。公开仓库对编辑或读取内容人数无限制。
Springloops是版本控制软件,支持Git与SVN,适合个人与团队商业使用。
Gogs是类似Github的开源代码管理系统,支持二进制运行、Docker或Vagrant安装,适用于任何支持Go语言的平台。提供远程仓库管理、权限分配与团队管理功能。
GitLab是一个Ruby on Rails开发的开源应用程序,提供Git项目仓库管理,通过Web界面访问公开或私人项目。具备与GitHub类似功能,如源代码浏览、缺陷管理与注释,支持团队访问管理与版本历史查看,提供代码片段收集功能。
Microsoft Visual Studio(VS)是微软开发的完整工具集,包含IDE、UML工具与代码管理功能,支持多种平台,如Windows、Windows Mobile、Windows CE等。
Google Code(已关闭)是Google提供的代码托管平台,提供版本控制、问题跟踪、Wiki、下载托管等功能,支持svn、git协议,可搜索互联网上的开源代码。
SourceForge是开源软件开发者进行开发管理的集中场所,提供存储、协作与发布平台。
CodePlex(已关闭)是微软的开源工程网站,提供开源工程展示与管理功能。
此外,还有全栈软件项目管理工具(unfuddle.com)、公共的Git托管站点(repo.or.cz)、软件协作平台并支持代码托管(launchpad.net)、简洁Trac与代码托管(repositoryhosting.com/z...)、搭建自己的github(gitorious.org)、专为Mozilla应用程序与扩展提供免费项目托管(mozdev.org)。
还有Oracle JDeveloper、IntelliJ IDEA、Eclipse、Visual Studio、Delphi、NetBeans IDE、Xcode与GNU Emacs(vc.el)等IDE软件,支持集成版本控制。
更多信息可访问发现并共享来自网络的优质资源的网站。