我使用 Emacs 编辑 DocBook 源文件,使用docbook-xml-mode.el这个扩展,在.emacs文件中加入下面配置: ;---------- Docbook (require 'docbook-xml-mode) Emacs 大纲模式 Emacs 还有一个 nxml-mode.el 也可以用来编写 DocBook,它的优点是可以自动完成 DTD 验证,有语法方面的错误能够
在前面的标准编译安装中,第一步是./configure[30],它会根据Makefile.in生成Makefile文件,然后make根据Makefile自动编译软件 通常在一个源码包中,已经包含了configure脚本和Makefile文件,作为课外知识,我们大致了解一下怎么生成这两个文件 autoconf autoconf用来生成configure脚本,它可以检查系统特性、编译环境、环境变量、软
BASH SCRIPTING 任何有自尊心的黑客都必须能够编写脚本。因此,任何自尊的 Linux 管理员都必须能够编写脚本。黑客经常需要自动化命令,有时需要多个工具,这可以通过他们自己编写的简短程序最有效地完成。 在本章中,我们构建了几个简单的 bash shell 脚本,以帮助您开始编写脚本。随着我们的进展,我们将添加功能和特性,最终构建一个脚本,该脚本能够在一系列 IP 地址中查找潜在的攻击目
1. 检查 为避免失败,再次检查一下,swap 空间够不够10G,/tmp 可用空间够不够10G: free -h df -h 2. 创建一个初始化编译环境的脚本 vim sudamod.sh 输入以下内容: #!/bin/sh # 改为自己的源码路径 BASEPATH=~/android/sudamod # 可选,进入 Python2 虚拟环境,见上一章说明 #source pyenv/b
Swift(5.3.2) 源码编译 编译环境 Big Sur 11.2(20D64) Python3 3.9.1 CMake 3.19.3 Ninja 1.10.2 Sccache 0.2.13 (可选) Xcode 12.4(12D4e) 第一次编译失败, CMake 版本为3.17.2, 之前本地编译OCLint时安装的一个版本, 如果编译的是更新的源码, 注意版本; Xcode版本与Swif
2. 并发的优势和风险 注:相同代码两次并发执行结果不同,不一定违反安全性。例如两个线程一读一写,可能先读后写,也可能先写再读。 3. 多线程并发与线程安全
搭建最简的开发环境 这一节来搭建一个最简单的能运行的helloworld,以后的代码也会在这一节的基础上慢慢增加 创建文件夹 mkdir cesium-test cd cesium-test 引入编译成果 将cesium源码中的Build文件夹,拷入cesium-test 创建html 将cesium-1.4.0/Apps/ 中的HelloWorld.html 拷入cesium-test 使用vs
上一节我们用ws模块创建了一个WebSocket应用。但是它只能简单地响应ECHO: xxx消息,还属于Hello, world级别的应用。 要创建真正的WebSocket应用,首先,得有一个基于MVC的Web应用,也就是我们在前面用koa2和Nunjucks创建的Web,在此基础上,把WebSocket添加进来,才算完整。 因此,本节的目标是基于WebSocket创建一个在线聊天室。 首先,我们
This tutorial describes the base compilation commands provided with OCaml. It is useful to learn these commands to understand OCaml's compilation model. However, eventually you will want to use a buil
This is a set of reasonable guidelines for formatting OCaml programs—guidelines which reflect the consensus among veteran OCaml programmers. Nevertheless, all detailed notifications of possible errors
什么是函数式编程 到现在我们已经讲了很多了,但还没有真正涉及到函数式编程。 目前所讲的所有特性 - 丰富的数据类型(rich data types), 模式匹配(pattern matching), 类型推导(type inference), 嵌套函数(nested functions) - 可以想象它们都可以在一种”超级C“语言中存在。这些特性当然很酷,它们使得代码简洁易读,减少bug,但是它们
自从Roy Fielding博士在2000年他的博士论文中提出REST(Representational State Transfer)风格的软件架构模式后,REST就基本上迅速取代了复杂而笨重的SOAP,成为Web API的标准了。 什么是Web API呢? 如果我们想要获取一篇Blog,输入http://localhost:9000/blog/123,就可以看到id为123的Blog页面,但这
现在,ORM框架、Web框架和配置都已就绪,我们可以开始编写一个最简单的MVC,把它们全部启动起来。 通过Web框架的@decorator和ORM框架的Model支持,可以很容易地编写一个处理首页URL的函数: # urls.py from transwarp.web import get, view from models import User, Blog, Comment @view('t
有了ORM,我们就可以把Web App需要的3个表用Model表示出来: import time, uuid from transwarp.db import next_id from transwarp.orm import Model, StringField, BooleanField, FloatField, TextField class User(Model): __tab
有了db模块,操作数据库直接写SQL就很方便。但是,我们还缺少ORM。如果有了ORM,就可以用类似这样的语句获取User对象: user = User.get('123') 而不是写SQL然后再转换成User对象: u = db.select_one('select * from users where id=?', '123') user = User(**u) 所以我们开始编写ORM模块: