<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[deyangliu的专栏]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/deyangliu</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; deyangliu]]></copyright><item><title><![CDATA[linux c clone 的栈空间大小最小为16字节 (linux 64bit)]]></title><link>https://blog.youkuaiyun.com/deyangliu/article/details/86557557</link><guid>https://blog.youkuaiyun.com/deyangliu/article/details/86557557</guid><author>deyangliu</author><pubDate>Sat, 19 Jan 2019 22:14:29 +0800</pubDate><description><![CDATA[背景

想在一个进程里面调用system()，但是它会继承文件句柄，内存映射等，还是同步调用，不太适合。因此想要一个轻量级的异步system。

clone()是在C语言库中定义的一个封装函数，它负责建立心轻量级进程的堆栈并且对编程者隐藏的clone()系统调用。实现clone()系统调用 的sys_clone()服务例程没有fn和arg参数。实际上，封装函数把fn指针存放在子进程堆栈的某个位置处...]]></description><category></category></item><item><title><![CDATA[json 压缩和格式化工具]]></title><link>https://blog.youkuaiyun.com/deyangliu/article/details/83031667</link><guid>https://blog.youkuaiyun.com/deyangliu/article/details/83031667</guid><author>deyangliu</author><pubDate>Fri, 12 Oct 2018 19:20:22 +0800</pubDate><description><![CDATA[C/C++层JSON库在www.json.org有。

我使用jsmn。

https://github.com/DeYangLiu/jsmn/commit/2d979edea9b628a44f9cc63fd3ef81a7446f84f5]]></description><category></category></item><item><title><![CDATA[android 5.1 后台下载服务分析]]></title><link>https://blog.youkuaiyun.com/deyangliu/article/details/82531809</link><guid>https://blog.youkuaiyun.com/deyangliu/article/details/82531809</guid><author>deyangliu</author><pubDate>Sat, 08 Sep 2018 18:02:01 +0800</pubDate><description><![CDATA[目的是分析DownloadService不断有打印的原因。



 

目录: \packages\providers\DownloadProvider

browser app -- android.app.DownloadManager ContentResolver.insert --

--&amp;gt; DownloadService {Notifier, DownloadThread, Do...]]></description><category></category></item><item><title><![CDATA[计算机生成的简单英文句子]]></title><link>https://blog.youkuaiyun.com/deyangliu/article/details/79720485</link><guid>https://blog.youkuaiyun.com/deyangliu/article/details/79720485</guid><author>deyangliu</author><pubDate>Tue, 27 Mar 2018 22:25:09 +0800</pubDate><description><![CDATA[&amp;gt; (define (sentence) (append (noun-phrase) (verb-phrase)))
&amp;gt; (define (noun-phrase) (append (Article) (Noun)))
&amp;gt; (define (verb-phrase) (append (Verb) (noun-phrase)))
&amp;gt; (define (Article) (on...]]></description><category></category></item><item><title><![CDATA[lisp 代码计算月供]]></title><link>https://blog.youkuaiyun.com/deyangliu/article/details/79686331</link><guid>https://blog.youkuaiyun.com/deyangliu/article/details/79686331</guid><author>deyangliu</author><pubDate>Sun, 25 Mar 2018 14:26:42 +0800</pubDate><description><![CDATA[;; 等额本息还款debx， 输入总金额A, 年利率y, m个月还清, 计算月供和总利息：
;; 例子:  (debx 1000000 0.0631 (* 30 12)) ;==&amp;gt;
;; 6196.247877564253
;; 1230649.235923131
(define (debx A y m)
  (let* [(b (/ y 12))
		 (b1 (expt (+ 1 b) ...]]></description><category></category></item><item><title><![CDATA[chez scheme for android 移植完成]]></title><link>https://blog.youkuaiyun.com/deyangliu/article/details/79604249</link><guid>https://blog.youkuaiyun.com/deyangliu/article/details/79604249</guid><author>deyangliu</author><pubDate>Sun, 18 Mar 2018 23:20:04 +0800</pubDate><description><![CDATA[到今天终于把喜欢的lisp移植到android上，前后花了不少晚上时间。android版本由scheme 命令行可执行程序， 解释器运行时petite.boot,  编译器组件scheme.boot三个文件组成。另外还开发了一个跟chez scheme官方源码无关的加载器：run-native-exe apk: 调用scheme, IO重定向到UI。运行示例：上面的截屏有几个技术点，这里总结下： ...]]></description><category></category></item><item><title><![CDATA[C++ namespace和scheme library 对比]]></title><link>https://blog.youkuaiyun.com/deyangliu/article/details/79255731</link><guid>https://blog.youkuaiyun.com/deyangliu/article/details/79255731</guid><author>deyangliu</author><pubDate>Sun, 04 Feb 2018 23:02:01 +0800</pubDate><description><![CDATA[#include 
int a = 1;
namespace A {
	int a = 2;
	namespace B {
		int a = 3;
		int fun() {
			printf("%d %d %d\n", a, A::a, ::a); //3 2 1
		}
	}
}
int main() {	
	A::B::fun();
	using namespace A; //引入A::]]></description><category></category></item><item><title><![CDATA[用lisp语言操作sqlite3数据库]]></title><link>https://blog.youkuaiyun.com/deyangliu/article/details/79234105</link><guid>https://blog.youkuaiyun.com/deyangliu/article/details/79234105</guid><author>deyangliu</author><pubDate>Thu, 01 Feb 2018 22:44:12 +0800</pubDate><description><![CDATA[linux环境下，先下载[1]对sqlite3.so的封装库代码。接口文档参考[2], 例子来自[3]。
> (load "sqlite3.sls") ;加载库代码
> (import (sqlite3)) ;引入名字空间
> (define db (open-database "yy.db")) ;创建或打开数据库
> (define stmt (prepare db "CREATE T]]></description><category></category></item><item><title><![CDATA[离散傅里叶变换DFT的推导和lisp实现]]></title><link>https://blog.youkuaiyun.com/deyangliu/article/details/79223106</link><guid>https://blog.youkuaiyun.com/deyangliu/article/details/79223106</guid><author>deyangliu</author><pubDate>Wed, 31 Jan 2018 23:08:34 +0800</pubDate><description><![CDATA[lisp 代码：点击打开链接
执行例子：
> (load "ss/dft.ss")
> (dft '(1 1 1 1 1 1 1 1))
(8 0 0 0 0 0 0 0)
> (idft (dft '(1 1 1 1 1 1 1 1)))
(1 1.0 1.0 1.0 1 1.0 1.0 1.0)

> (dft '(1 2 3 4 5 6 7 8))
(36 -4.0+9.6]]></description><category></category></item><item><title><![CDATA[数学集合的lisp表示]]></title><link>https://blog.youkuaiyun.com/deyangliu/article/details/79189517</link><guid>https://blog.youkuaiyun.com/deyangliu/article/details/79189517</guid><author>deyangliu</author><pubDate>Sun, 28 Jan 2018 21:34:31 +0800</pubDate><description><![CDATA[数学上集合的表示：
有理数集

  
和正实数集

  
则可以分别表示为

  
和

 




lisp 表示：

(set-of x (x in '(1 2 3))) ;==> (1 2 3)
(set-of (cons x y) (x in '(1 2 3)) (y is (* x x))) ;==> ((1 . 1) (2 . 4) (3 . 9]]></description><category></category></item><item><title><![CDATA[在windows上编译chez scheme代码生成独立可执行文件]]></title><link>https://blog.youkuaiyun.com/deyangliu/article/details/79149447</link><guid>https://blog.youkuaiyun.com/deyangliu/article/details/79149447</guid><author>deyangliu</author><pubDate>Wed, 24 Jan 2018 12:51:01 +0800</pubDate><description><![CDATA[依赖：mingw工具链gcc,  预制文件 [1]。
测试文件test.ss内容为：
(import (chezscheme))
(printf "args is ~a~%"(command-line-arguments))

编译：

$ ./compile-chez-program.exe test.ss
执行： 

$ ./test 123 456
args is (1]]></description><category></category></item><item><title><![CDATA[continuation 及阴阳谜题的详细解释]]></title><link>https://blog.youkuaiyun.com/deyangliu/article/details/79069657</link><guid>https://blog.youkuaiyun.com/deyangliu/article/details/79069657</guid><author>deyangliu</author><pubDate>Mon, 15 Jan 2018 22:37:41 +0800</pubDate><description><![CDATA[call-with-current-continuation: obtains its continuation and passes it to procedure. The continuation itself is represented by a procedure. Each time this procedure is applied to zero or more values, ]]></description><category></category></item><item><title><![CDATA[chez scheme的交叉编译]]></title><link>https://blog.youkuaiyun.com/deyangliu/article/details/78796296</link><guid>https://blog.youkuaiyun.com/deyangliu/article/details/78796296</guid><author>deyangliu</author><pubDate>Wed, 13 Dec 2017 20:17:56 +0800</pubDate><description><![CDATA[download upstream sourcegit clone –depth 1 https://github.com/cisco/ChezSchemebuild mingw target on win7 hostpatchmerge the contents of  patch-for-mingw directory.build hostmsys> 
 ./configure -m=ti3nt]]></description><category></category></item><item><title><![CDATA[Chez Scheme for windows]]></title><link>https://blog.youkuaiyun.com/deyangliu/article/details/72903727</link><guid>https://blog.youkuaiyun.com/deyangliu/article/details/72903727</guid><author>deyangliu</author><pubDate>Wed, 07 Jun 2017 20:48:03 +0800</pubDate><description><![CDATA[common lisp 太庞大了，从好几遍的编译就看得出来。
scheme没历史包袱， 简单许多， 目前公认最好的是Chez Scheme。
git 源码编译，linux上没有什么问题，windows上要用vc++才能编译。 


如果不想动手下载好几个GB的vs iso, windows 编译版本请从下面下载:
https://github.com/DeYangLiu/ChezSch]]></description><category></category></item><item><title><![CDATA[clojure 初试]]></title><link>https://blog.youkuaiyun.com/deyangliu/article/details/72629827</link><guid>https://blog.youkuaiyun.com/deyangliu/article/details/72629827</guid><author>deyangliu</author><pubDate>Mon, 22 May 2017 20:33:07 +0800</pubDate><description><![CDATA[Twitter开源的著名的分布式并行计算框架Storm就是用Clojure编写的。 
http server 例子：https://github.com/moonranger/clj.tr069Datomic 
http://jerrypeng.me/2015/05/26/talk-about-monitoring-again/Leiningen for project automation pac]]></description><category></category></item><item><title><![CDATA[ubuntu 16.04 使用virt-manager 安装win7 虚拟机]]></title><link>https://blog.youkuaiyun.com/deyangliu/article/details/55827907</link><guid>https://blog.youkuaiyun.com/deyangliu/article/details/55827907</guid><author>deyangliu</author><pubDate>Sun, 19 Feb 2017 22:48:05 +0800</pubDate><description><![CDATA[准备自己找一个win7安装iso,大概4GB左右。sudo apt install qemu virt-manager 
sudo adduser $USER libvirtd 
logout ##需要注销adduser才生效。创建时不能改变路径，我们先手动做一个： 
qemu-img create -f qcow2 win7.qcow2 70G安装win7挂住：Windows 7 Setup ha]]></description><category></category></item><item><title><![CDATA[binary indexed tree]]></title><link>https://blog.youkuaiyun.com/deyangliu/article/details/53965324</link><guid>https://blog.youkuaiyun.com/deyangliu/article/details/53965324</guid><author>deyangliu</author><pubDate>Sun, 01 Jan 2017 11:16:23 +0800</pubDate><description><![CDATA[binary indexed tree背景二进制索引树(binary indexed tree [bit])是一种高效计算累积频率的“假想数据结构“，不是通所说的二叉搜索树(binary search tree)。 
对一维数组A求累积频率， 常规做法如下。 
更新(x, v) := A[x] += v; //O(1) 
查询(x) := A[0] + A[1] + … + A[x]; //O(N)]]></description><category></category></item><item><title><![CDATA[三叉树的完整操作]]></title><link>https://blog.youkuaiyun.com/deyangliu/article/details/53365553</link><guid>https://blog.youkuaiyun.com/deyangliu/article/details/53365553</guid><author>deyangliu</author><pubDate>Sun, 27 Nov 2016 17:29:51 +0800</pubDate><description><![CDATA[作为针对Trie树空间优化， 原始论文及网上的代码都没有实现删除操作， 在下补上[1]。
出发点是删除子树，没有考虑去清理没有叶子的树枝。



[1]https://github.com/DeYangLiu/data_structure/commit/3d2fb612f619c9b8f2be04ae983e0a0af159284c?diff=unified]]></description><category></category></item><item><title><![CDATA[android rime 输入法配置入门]]></title><link>https://blog.youkuaiyun.com/deyangliu/article/details/51987218</link><guid>https://blog.youkuaiyun.com/deyangliu/article/details/51987218</guid><author>deyangliu</author><pubDate>Thu, 21 Jul 2016 22:22:34 +0800</pubDate><description><![CDATA[android rime 输入法目前是 [1].
下载和安装见 [0],　但是你安装后发现并不能输入汉字，这个教程 [0]也没说清楚。
我这里补充下，作为使用入门介绍。


step1
不能输入汉字的原因是，你没有配置几个文件。从 [2]下载模版。
至少需要把里面的
default.yaml, essay.txt, symbols.yaml
luna_pinyin*.yaml, ]]></description><category></category></item><item><title><![CDATA[common lisp 安装和使用第三方包]]></title><link>https://blog.youkuaiyun.com/deyangliu/article/details/51416206</link><guid>https://blog.youkuaiyun.com/deyangliu/article/details/51416206</guid><author>deyangliu</author><pubDate>Sun, 15 May 2016 11:42:37 +0800</pubDate><description><![CDATA[就slime 安装有两个做法， 一个通过sbcl load quicklisp, 一个通过emacs　M-x list-packages。
发现当sbcl卸载后slime不行了，重新又搞了一遍，还是quicklisp好用些。
lisp本身要放到环境中才能发挥威力。如果说emacs比vim的优势，就是emacs使用的elisp，更容易扩展。
vim 的语法高亮做的太过了，以致于导致文本本身的标]]></description><category></category></item></channel></rss>