自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(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 794 2

原创 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 2122 10

原创 linux c clone 的栈空间大小最小为16字节 (linux 64bit)

背景想在一个进程里面调用system(),但是它会继承文件句柄,内存映射等,还是同步调用,不太适合。因此想要一个轻量级的异步system。clone()是在C语言库中定义的一个封装函数,它负责建立心轻量级进程的堆栈并且对编程者隐藏的clone()系统调用。实现clone()系统调用 的sys_clone()服务例程没有fn和arg参数。实际上,封装函数把fn指针存放在子进程堆栈的某个位置处...

2019-01-19 22:14:29 974 1

原创 json 压缩和格式化工具

C/C++层JSON库在www.json.org有。我使用jsmn。https://github.com/DeYangLiu/jsmn/commit/2d979edea9b628a44f9cc63fd3ef81a7446f84f5

2018-10-12 19:20:22 2568

原创 android 5.1 后台下载服务分析

目的是分析DownloadService不断有打印的原因。 目录: \packages\providers\DownloadProviderbrowser app -- android.app.DownloadManager ContentResolver.insert ----> DownloadService {Notifier, DownloadThread, Do...

2018-09-08 18:02:01 431

原创 计算机生成的简单英文句子

> (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 1119

原创 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 564

原创 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 1821 1

原创 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 364

原创 用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 987

原创 离散傅里叶变换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 552

原创 数学集合的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 332

原创 在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 2941

原创 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 367

原创 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 1283

原创 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 3715

原创 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 667

原创 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 3807

原创 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 429

原创 三叉树的完整操作

作为针对Trie树空间优化, 原始论文及网上的代码都没有实现删除操作, 在下补上[1]。出发点是删除子树,没有考虑去清理没有叶子的树枝。[1]https://github.com/DeYangLiu/data_structure/commit/3d2fb612f619c9b8f2be04ae983e0a0af159284c?diff=unified

2016-11-27 17:29:51 4787

原创 android rime 输入法配置入门

android rime 输入法目前是 [1].下载和安装见 [0], 但是你安装后发现并不能输入汉字,这个教程 [0]也没说清楚。我这里补充下,作为使用入门介绍。step1不能输入汉字的原因是,你没有配置几个文件。从 [2]下载模版。至少需要把里面的default.yaml, essay.txt, symbols.yamlluna_pinyin*.yaml,

2016-07-21 22:22:34 11573 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 3680

原创 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 2358

原创 如何读取损坏的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 2576

原创 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 1071

原创 Strongart(苏州于志成)

以前的抽象代数,交换代数,泛函,算是根本没学会。等看完他的视频再做评论。 http://blog.sina.com.cn/strongart

2016-04-05 12:47:17 2799

原创 向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 1084

原创 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 4418

原创 uml制图工具比较: graphviz, umlet, visio

# graphviz自动排版dot格式的文本文件。支持批量关系A -> {B,C, ...}。通过rank来间接支持手动布局。跨平台。互操作:有限支持,只能通过svg格式导出,不能在doc中直接启动。# umlet可直接在模板上修改。属性可通过类似markdown语言任意修改。线条箭头类型可任意修改。可手动拉线条中间任意一点,横平竖直须手动调整。跨平台。

2015-12-09 18:45:24 2417

原创 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 615

原创 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 1594

原创 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 1209

原创 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 2275

原创 网络模拟:丢包,延迟,乱序

由于条件限制,需要在局域网模拟广域网丢包,延迟等现象。linux 已经原生提供了用户空间工具流量控制tc,网络模拟netem。我试了桥接的虚拟机,loopback 接口, 设置了无效,不会丢包, 至少需要两台物理机器连到同一局域网。下面的例子参考了[1],[2]。最简单的是无类别配置tc qdisc add dev eth0 root netem loss 50%ping www.ba

2015-09-06 12:54:47 4404

原创 监听所有rtp/rtcp包

监听所有的udp包,需要在数据链路层做,如果在网络层,不是发往本地的IP包都上不来; 另外,网络监听一个问题是上来的数据包太多, 处理不过来,会导致丢包,需要过滤。如果在应用层做,会有内核空间拷贝到用户空间的开销,最好内核里面做, linux已经原生提供了Linux Packet Filter。表示方式采用BPF。      BPF 原始格式看起来像汇编语言, tcpdump -dd可以把如下

2015-09-04 21:11:43 1842

原创 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 4779 1

原创 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 729

原创 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 2916

原创 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 3165

原创 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 2403

BinderJava

Binder简化例子, 只使用java演示Binder和Service实现。希望对写新的跨进程Service有帮助。

2015-04-18

ffplay2-v2.apk

这周末加了,支持软键盘输入和历史记录。使用了EditText, 应用内部存储。 这里考虑了历史记录的更新: 总共8条记录,新的放在后面,最前面被挤出。

2014-12-21

android ffplay

linux上编译版本。ffplay 移植到android上,使用sdl2。显示全屏,保持宽高比。启动时到/sdcard目录,可以选择要播放的文件。

2014-12-20

网页flash播放插件

在网页上播放flash视频,必须要一个插件,这个插件的 classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000"

2014-11-09

netsurf 浏览器

现在编译版本改成静态的,去掉了对一大堆dll的依赖。这个版本比上一个版本,增加了: 1. 复制粘贴. 2. 支持https. 3. 支持中文, 修改了断行问题. 4. 加了javascript。

2013-09-07

netsurf for windows

netsurf is a small and fast web browser, written in C. windows built using mingw. later i will add notes on how to build it.

2013-08-21

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除