- 博客(142)
- 资源 (6)
- 问答 (1)
- 收藏
- 关注

原创 android 日记
Q. 如果我想做一个库,给第三方用, C语言的话,给*.a和*.h头文件就行了。但是java没有所谓的“头文件”概念,那第三方如何知道我实现的public method signature呢?A: 参考[1], jar -tf for_third_lib.jar 列出有哪些class, 然后, javap -classpath for_third_lib.jar com.abc.hell
2015-02-04 19:28:01
828

原创 ffplay2 for android v2.8 发布
项目地址:https://github.com/DeYangLiu/AndroidPlayer/看点: 用ListView实现的简易文件浏览器。用intent启动另一个Activity。ndk 调试。移植ffmpeg 2.5和sdl2 到android的各种坑。同时编译多个库====ln -s /mnt/OpenSource/SDL_image jni/
2014-12-17 22:41:57
2274
1
原创 linux c clone 的栈空间大小最小为16字节 (linux 64bit)
背景想在一个进程里面调用system(),但是它会继承文件句柄,内存映射等,还是同步调用,不太适合。因此想要一个轻量级的异步system。clone()是在C语言库中定义的一个封装函数,它负责建立心轻量级进程的堆栈并且对编程者隐藏的clone()系统调用。实现clone()系统调用 的sys_clone()服务例程没有fn和arg参数。实际上,封装函数把fn指针存放在子进程堆栈的某个位置处...
2019-01-19 22:14:29
1064
1
原创 json 压缩和格式化工具
C/C++层JSON库在www.json.org有。我使用jsmn。https://github.com/DeYangLiu/jsmn/commit/2d979edea9b628a44f9cc63fd3ef81a7446f84f5
2018-10-12 19:20:22
2643
原创 android 5.1 后台下载服务分析
目的是分析DownloadService不断有打印的原因。 目录: \packages\providers\DownloadProviderbrowser app -- android.app.DownloadManager ContentResolver.insert ----> DownloadService {Notifier, DownloadThread, Do...
2018-09-08 18:02:01
556
原创 计算机生成的简单英文句子
> (define (sentence) (append (noun-phrase) (verb-phrase)))> (define (noun-phrase) (append (Article) (Noun)))> (define (verb-phrase) (append (Verb) (noun-phrase)))> (define (Article) (on...
2018-03-27 22:25:09
1203
原创 lisp 代码计算月供
;; 等额本息还款debx, 输入总金额A, 年利率y, m个月还清, 计算月供和总利息:;; 例子: (debx 1000000 0.0631 (* 30 12)) ;==>;; 6196.247877564253;; 1230649.235923131(define (debx A y m) (let* [(b (/ y 12)) (b1 (expt (+ 1 b) ...
2018-03-25 14:26:42
613
原创 chez scheme for android 移植完成
到今天终于把喜欢的lisp移植到android上,前后花了不少晚上时间。android版本由scheme 命令行可执行程序, 解释器运行时petite.boot, 编译器组件scheme.boot三个文件组成。另外还开发了一个跟chez scheme官方源码无关的加载器:run-native-exe apk: 调用scheme, IO重定向到UI。运行示例:上面的截屏有几个技术点,这里总结下: ...
2018-03-18 23:20:04
1938
原创 C++ namespace和scheme library 对比
#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::
2018-02-04 23:02:01
446
原创 用lisp语言操作sqlite3数据库
linux环境下,先下载[1]对sqlite3.so的封装库代码。接口文档参考[2], 例子来自[3]。> (load "sqlite3.sls") ;加载库代码> (import (sqlite3)) ;引入名字空间> (define db (open-database "yy.db")) ;创建或打开数据库> (define stmt (prepare db "CREATE T
2018-02-01 22:44:12
1093
原创 离散傅里叶变换DFT的推导和lisp实现
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
2018-01-31 23:08:34
610
原创 数学集合的lisp表示
数学上集合的表示:有理数集 和正实数集 则可以分别表示为 和 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
2018-01-28 21:34:31
380
原创 在windows上编译chez scheme代码生成独立可执行文件
依赖:mingw工具链gcc, 预制文件 [1]。测试文件test.ss内容为:(import (chezscheme))(printf "args is ~a~%"(command-line-arguments))编译:$ ./compile-chez-program.exe test.ss执行: $ ./test 123 456args is (1
2018-01-24 12:51:01
3162
原创 continuation 及阴阳谜题的详细解释
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,
2018-01-15 22:37:41
431
原创 chez scheme的交叉编译
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
2017-12-13 20:17:56
1357
原创 Chez Scheme for windows
common lisp 太庞大了,从好几遍的编译就看得出来。scheme没历史包袱, 简单许多, 目前公认最好的是Chez Scheme。git 源码编译,linux上没有什么问题,windows上要用vc++才能编译。 如果不想动手下载好几个GB的vs iso, windows 编译版本请从下面下载:https://github.com/DeYangLiu/ChezSch
2017-06-07 20:48:03
3789
原创 clojure 初试
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
2017-05-22 20:33:07
719
原创 ubuntu 16.04 使用virt-manager 安装win7 虚拟机
准备自己找一个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
2017-02-19 22:48:05
3956
原创 binary indexed tree
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)
2017-01-01 11:16:23
485
原创 三叉树的完整操作
作为针对Trie树空间优化, 原始论文及网上的代码都没有实现删除操作, 在下补上[1]。出发点是删除子树,没有考虑去清理没有叶子的树枝。[1]https://github.com/DeYangLiu/data_structure/commit/3d2fb612f619c9b8f2be04ae983e0a0af159284c?diff=unified
2016-11-27 17:29:51
4927
原创 android rime 输入法配置入门
android rime 输入法目前是 [1].下载和安装见 [0], 但是你安装后发现并不能输入汉字,这个教程 [0]也没说清楚。我这里补充下,作为使用入门介绍。step1不能输入汉字的原因是,你没有配置几个文件。从 [2]下载模版。至少需要把里面的default.yaml, essay.txt, symbols.yamlluna_pinyin*.yaml,
2016-07-21 22:22:34
11992
1
原创 common lisp 安装和使用第三方包
就slime 安装有两个做法, 一个通过sbcl load quicklisp, 一个通过emacs M-x list-packages。发现当sbcl卸载后slime不行了,重新又搞了一遍,还是quicklisp好用些。lisp本身要放到环境中才能发挥威力。如果说emacs比vim的优势,就是emacs使用的elisp,更容易扩展。vim 的语法高亮做的太过了,以致于导致文本本身的标
2016-05-15 11:42:37
3773
原创 common lisp 下载设置入门
起点linux: https://gist.github.com/jteneycke/7947353windows: http://jaist.dl.sourceforge.net/project/lispstick/lispstick.zip第一次尝试: 创建独立的可执行程序lispstick\Steel Bank Common Lisp\1.1.12 .\sbcl.exe –core sbcl
2016-05-09 21:06:07
2482
原创 如何读取损坏的dvd内容
我今天笔记本读买的书附带的光盘,发现直接copy报错, 光盘本身有划痕。apt-install 一些工具也不管用。最后只需几条命令就行了:sudo dd if=/dev/sr0 of=image.iso bs=2048 conv=noerror,notrunc iflag=nonblocksudo mount -o ro,loop image.iso /mnt/dumpcd /
2016-05-02 23:51:14
2731
原创 ffmpeg hls demo
ffmpeg windows版下载https://ffmpeg.zeranoe.com/builds/win32/shared/ffmpeg-20160404-git-54c9146-win32-shared.7z 下面假设解压到E:\tools\Player\ffmpeg ffmpeg.exe在E:\tools\Player\ffmpeg\bin下面,也把shttpd.exe放在这个bin目录
2016-04-05 19:27:37
1123
原创 Strongart(苏州于志成)
以前的抽象代数,交换代数,泛函,算是根本没学会。等看完他的视频再做评论。 http://blog.sina.com.cn/strongart
2016-04-05 12:47:17
2885
原创 向ts文件中插入SI表
一个办法是修改mpegtsenc.c, 我看见一个本科的毕业论文是这么搞的,但是不够灵活,得重新编译。另一个办法是[ref1]:How to Use OpenCaster with FFmpegbackgroundffmpeg now can merge multiple services to a single ts file, eg:ffmpeg -i cctv
2016-03-24 17:48:26
1137
原创 gstreamer 1.0 初阶
# media framworksopencore: begin with PacketVideo av sync with master clock sink-node parallel parser/decoder/sink dropped in android 2.3 (died)stagefright: begin with android 2.1 v
2016-01-23 20:14:41
4494
原创 uml制图工具比较: graphviz, umlet, visio
# graphviz自动排版dot格式的文本文件。支持批量关系A -> {B,C, ...}。通过rank来间接支持手动布局。跨平台。互操作:有限支持,只能通过svg格式导出,不能在doc中直接启动。# umlet可直接在模板上修改。属性可通过类似markdown语言任意修改。线条箭头类型可任意修改。可手动拉线条中间任意一点,横平竖直须手动调整。跨平台。
2015-12-09 18:45:24
2599
原创 dot 转换的一个小工具
A -> B -> C 我以为要分开写成A -> B; B -> C。另外我不想重复,比如A-> B; A-> C我想表示为A然后缩进一个空格写B,C。于是有了下面的一个小工具。/*indent text file to graphviz dot descriptionusage: cat in.txt | ./i2g | xdote.g.indent and chains:aa
2015-11-07 20:26:15
667
原创 doxygen中注释,内嵌dot, msc的例子
doxygen主要是对代码中的标记自动生成html/pdf/latex文档。mscgen用来生成时序图,dot用来生成函数调用关系图。如果希望某些文件或函数不要在最终文档圼,不加注释标记就行了。/*!@file@brief doxgen usages@author 谁tmd的搞的@version 版本了@date 你啥时候搞的@note 要有file标记,下面的配置需要安装graph
2015-11-07 20:11:54
1686
原创 iptables/tc 原理
netfilter hook在IP层,linux packet filter/BPF 旁路了链路层,整个包流动见[flow].iptables, tc对这两层都有作用。用法[usage]:iptables [-t table] cmd chain rules -j actiontable := raw, mangle, nat, filtercmd := -P defa
2015-10-11 12:09:27
1266
原创 android pppoe
android pppoe 调用路径====Y:\new_TW\vendors_R210\skyworth\apps\SkyEthernetServer\src\com\topway\service通过广播接收请求frameworks\base\ethernet\EthernetManager.getEthernetMode() //ETHERNET_CONNECT_MODE_
2015-10-09 19:13:28
2399
原创 网络模拟:丢包,延迟,乱序
由于条件限制,需要在局域网模拟广域网丢包,延迟等现象。linux 已经原生提供了用户空间工具流量控制tc,网络模拟netem。我试了桥接的虚拟机,loopback 接口, 设置了无效,不会丢包, 至少需要两台物理机器连到同一局域网。下面的例子参考了[1],[2]。最简单的是无类别配置tc qdisc add dev eth0 root netem loss 50%ping www.ba
2015-09-06 12:54:47
4540
原创 监听所有rtp/rtcp包
监听所有的udp包,需要在数据链路层做,如果在网络层,不是发往本地的IP包都上不来; 另外,网络监听一个问题是上来的数据包太多, 处理不过来,会导致丢包,需要过滤。如果在应用层做,会有内核空间拷贝到用户空间的开销,最好内核里面做, linux已经原生提供了Linux Packet Filter。表示方式采用BPF。 BPF 原始格式看起来像汇编语言, tcpdump -dd可以把如下
2015-09-04 21:11:43
1918
原创 rtp丢包重传demo
基于ffmpeg, 稍作修改,测试例子: ffmpeg -fflags +genpts -re -i 0Cannon.f4v \ -an -vcodec copy -f rtp rtp://224.0.0.239:5002?localport=5000 \ -vn -acodec copy -f rtp rtp://224.0.0.239:5004?localport=5006 \
2015-09-02 23:37:26
4872
原创 http Cache-Control: If-None-Match ETag/If-Modifed-Since Last-Modified
这里最终决定采用chunked是为了和长连接[3]配合使用, 省去slow-start ack/congestion window增加到正常大小的时间,还有3次握手时间(究竟是多少毫秒?)对原先代码的改造,逻辑上从上到下分层为file: >0 -- ok, 0 -- eof, -1 -- err, -11 -- eagain.prepare: 0 -- ok, 0 -- sta
2015-08-26 20:01:10
782
原创 http: 支持 Content-Encoding: gzip
curl -v --compressed http://localhost:8080/upload/a.out -o a.out请求:Accept-Encoding: gzip, deflate响应:Content-Encoding: gzipgzip -9c xx.txt > xx.gz开头是标记0x1f,0x8b,然后0x08表示使用deflate,前10个字节
2015-08-24 19:42:21
3023
原创 http:关于长连接和分块传输
动态生成的内容比如压缩流,动态网页+js hide,事先并不知道Content-Length, 为了提高响应速度,希望一边生成一边传输,通常以关闭连接表明内容传完完毕。但是希望连接keep-alive呢?解决办法是chunked transfer encoding,RFC规范要求如果是http/1.1,服务端和客户端都必须支持。例子:HTTP/1.1 200 OK\r\nT
2015-08-23 19:17:54
3235
原创 https实现的几个问题
官方推荐是TLS_server_method,我当前的系统ubuntu14.04,最新的只有SSLv23,但是抓包发现是TLSv1.2,文档只说了TLSv1,难道被ubuntu私下改了,只是头文件和文档没有更新?有人说accept之后,要在set non block之前调SSL_accept,否则会影响握手消息收发?任何一个SSL网络操作不管读写都可能产生 SSL_ERROR_WA
2015-08-22 20:15:26
2640
ffplay2-v2.apk
2014-12-21
网页flash播放插件
2014-11-09
netsurf 浏览器
2013-09-07
netsurf for windows
2013-08-21
为什么gcc 对类型转换不报错?
2013-11-30
TA创建的收藏夹 TA关注的收藏夹
TA关注的人