<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[span76的专栏]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/span76</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; span76]]></copyright><item><title><![CDATA[跳棋程序有2000用户了，在Github上开源]]></title><link>https://blog.youkuaiyun.com/span76/article/details/52397714</link><guid>https://blog.youkuaiyun.com/span76/article/details/52397714</guid><author>span76</author><pubDate>Thu, 01 Sep 2016 11:28:54 +0800</pubDate><description><![CDATA[This is short-cut version of Chinese Checkers for only 2 sides, don't know Chinese Checkers? see https://en.wikipedia.org/wiki/Chinese_checkers.

Current it is built on Android Studio 2.1.1, you can]]></description><category></category></item><item><title><![CDATA[原来 Java8 Stream 中的排序是插入排序]]></title><link>https://blog.youkuaiyun.com/span76/article/details/52315595</link><guid>https://blog.youkuaiyun.com/span76/article/details/52315595</guid><author>span76</author><pubDate>Thu, 25 Aug 2016 16:09:58 +0800</pubDate><description><![CDATA[写了小程序，验证 Java8 Steam sort是如何实现


package com.pnp.tryJ8col;

import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;
import java.util.stream.Stream;
public class Main {]]></description><category></category></item><item><title><![CDATA[Android MediaPlayer 类图和调用关系]]></title><link>https://blog.youkuaiyun.com/span76/article/details/51897870</link><guid>https://blog.youkuaiyun.com/span76/article/details/51897870</guid><author>span76</author><pubDate>Wed, 13 Jul 2016 14:40:22 +0800</pubDate><description><![CDATA[Service side includes 3 components: Service, Service_client and Service_Impementation
Service: it will be regiestered to ServiceManager, so Client can locate it, then call Service to create an Servic]]></description><category></category></item><item><title><![CDATA[Droidplanner(tower) 系统分析]]></title><link>https://blog.youkuaiyun.com/span76/article/details/51886006</link><guid>https://blog.youkuaiyun.com/span76/article/details/51886006</guid><author>span76</author><pubDate>Tue, 12 Jul 2016 10:25:30 +0800</pubDate><description><![CDATA[个人使用 DroidPlanner 手机地面站（简称DP），觉得很好用。也想了解其系统构成。就 git 下载了一个，在Android Studio 中编译成功。而后又看了下代码



下面谈谈自己粗略理解：


观测者模式
广泛使用观测者模式（Listener）， 这跟 model-view-controler 模式也相似， model数据变化，立马通知 view 更新显示。 而无]]></description><category></category></item><item><title><![CDATA[suid 实验]]></title><link>https://blog.youkuaiyun.com/span76/article/details/51755579</link><guid>https://blog.youkuaiyun.com/span76/article/details/51755579</guid><author>span76</author><pubDate>Fri, 24 Jun 2016 20:54:50 +0800</pubDate><description><![CDATA[简单验证
看 /usr/bin/passwd 有 suid
-rwsr-xr-x 1 root root 47032   /usr/bin/passwd
用 payne运行它,发现用户是 root  
payne@payne-MS-7678:~/try/uid$ passwd
root      2621  0.0  0.0  64636  1596 pts/12   S+   20:0]]></description><category></category></item><item><title><![CDATA[android cts理清testpackage和文件名的对应关系]]></title><link>https://blog.youkuaiyun.com/span76/article/details/51251050</link><guid>https://blog.youkuaiyun.com/span76/article/details/51251050</guid><author>span76</author><pubDate>Tue, 26 Apr 2016 15:50:51 +0800</pubDate><description><![CDATA[android cts test package 管理有点混乱
比如 testpackage android.appwidget 的文件是  CtsAppWidgetTestCases.xml (大概有1/4的文件名和testpackage名字一致  ) 
当你生成test plan 的plan 又要指明 testpackage


  



我写了段python脚本，找出这些]]></description><category></category></item><item><title><![CDATA[inotify的用法实践]]></title><link>https://blog.youkuaiyun.com/span76/article/details/51064238</link><guid>https://blog.youkuaiyun.com/span76/article/details/51064238</guid><author>span76</author><pubDate>Tue, 05 Apr 2016 14:23:29 +0800</pubDate><description><![CDATA[inotify可用来监听句柄，从而知道文件是否被更改，删除，等


监控文件被修改和删除，重新读取数据的代码如下.


值得注意的要点是，ubunutu中很多修改的文件策略都是删除，再重建（比如用vi编辑一个文件）
当文件删除／再重建后，将收到 IN_DELETE_SELF 消息和 IN_IGNORED 消息，　而后　watch_id 将被从　add_watch中移出，以后再收不到消]]></description><category></category></item><item><title><![CDATA[追踪bionic的call method的方法]]></title><link>https://blog.youkuaiyun.com/span76/article/details/50836166</link><guid>https://blog.youkuaiyun.com/span76/article/details/50836166</guid><author>span76</author><pubDate>Wed, 09 Mar 2016 16:17:49 +0800</pubDate><description><![CDATA[如果要追踪系统有没有调用bionic的方法，可以采用替换大法


比如要查 prctl()  这个函数是否被调用
就把 bionic/libc/arch-x86/syscalls/prctl.S 中的prctl 改名为  prctl1
而后自己创建一个 bionic/pnp_prctl.cpp 

#include 

#include 
#include 
__BEGIN_DECLS]]></description><category></category></item><item><title><![CDATA[cleanflight 代码简单分析]]></title><link>https://blog.youkuaiyun.com/span76/article/details/50685307</link><guid>https://blog.youkuaiyun.com/span76/article/details/50685307</guid><author>span76</author><pubDate>Thu, 18 Feb 2016 13:04:28 +0800</pubDate><description><![CDATA[用 Cleanflight 比较满意，就看看了它的源代码
以便将来修改的时候方便]]></description><category></category></item><item><title><![CDATA[2.4g遥控发射机接收机基本流程]]></title><link>https://blog.youkuaiyun.com/span76/article/details/50684484</link><guid>https://blog.youkuaiyun.com/span76/article/details/50684484</guid><author>span76</author><pubDate>Thu, 18 Feb 2016 11:20:35 +0800</pubDate><description><![CDATA[bind
发射选：择固定的rf channel, 和 address　发送tx id
接收机：择固定的rf channel, 和 address 监听， 收到了，记录  tx id


发射
发射机 把各channel 数据, 打包发送， 还要加上 tx id (或者 tx id 与 address 整合了) 
接收机：接收数据，收到后解包，转化为pwm控制各舵机，电调


]]></description><category></category></item><item><title><![CDATA[如何打log 检查 Android CTS failure]]></title><link>https://blog.youkuaiyun.com/span76/article/details/50681079</link><guid>https://blog.youkuaiyun.com/span76/article/details/50681079</guid><author>span76</author><pubDate>Wed, 17 Feb 2016 16:23:07 +0800</pubDate><description><![CDATA[跑了CTS 就需要检查出问题的地方
CTS提供一些Log但可能不够用，需要自己下该CTS src再增加代码，　如何做？


1)根据出错信息，找到代码位置
比如提示　com.android.cts.aadb.TestDeviceFuncTest＃testSyncFiles_extStorageVariable　出错
通过搜索找到文件是　cts/hostsidetests/aadb/sr]]></description><category></category></item><item><title><![CDATA[把简单的老Android App项目转移到Android Studio]]></title><link>https://blog.youkuaiyun.com/span76/article/details/50675590</link><guid>https://blog.youkuaiyun.com/span76/article/details/50675590</guid><author>span76</author><pubDate>Tue, 16 Feb 2016 16:42:18 +0800</pubDate><description><![CDATA[过去写了若干Android App, 都是在eclipse中写的
现在要转移到Android Studio
Android Studio 有个 import的功能，但是我就用自己编写简单跳棋程序，实验了一下失败了


所以这里谈谈手动转移的建议
1）建一个空的Android项目
 注意包的名称和原项目名称完全一致


2）把原项目的文件 copy过来
cd src/
cp]]></description><category></category></item><item><title><![CDATA[android studio老办法编jni]]></title><link>https://blog.youkuaiyun.com/span76/article/details/50674601</link><guid>https://blog.youkuaiyun.com/span76/article/details/50674601</guid><author>span76</author><pubDate>Tue, 16 Feb 2016 14:51:15 +0800</pubDate><description><![CDATA[过去一直用 eclipse, 现在google的官方支持都到 android studio, 所以必须用会它


以前在双核i3 win7上运行AS, 慢得如同噩梦一般
由来在 ubuntu  i5上运行，而后勇xming来作为xserver, UI相应还是慢得同噩梦
只好全在ubuntu上运行了
比较奇怪的是 AS 经常要访问网络，如果被 GFW 挡住了，就没法使用了


实验]]></description><category></category></item><item><title><![CDATA[试用groovy]]></title><link>https://blog.youkuaiyun.com/span76/article/details/50673501</link><guid>https://blog.youkuaiyun.com/span76/article/details/50673501</guid><author>span76</author><pubDate>Tue, 16 Feb 2016 11:10:49 +0800</pubDate><description><![CDATA[学计算机的没办法，新东西来了，只有跟上
groovy 不知道goolge搞出来做啥，可能是java编程太麻烦，找一个替代品


安装在 ubuntu下直接安装
sudo apt-get install groovy

而后运行 groovysh，这个东西不太好用
比如生命变量：
def str = "Hello world"

要把 def去掉，否则就是声明的 local 变]]></description><category></category></item><item><title><![CDATA[unsigned int 相减的妙处]]></title><link>https://blog.youkuaiyun.com/span76/article/details/50587502</link><guid>https://blog.youkuaiyun.com/span76/article/details/50587502</guid><author>span76</author><pubDate>Tue, 26 Jan 2016 15:16:29 +0800</pubDate><description><![CDATA[arduino 中定时器会清零，当我计算两个时间的间隔，是否会受到清0的影响，答案是不会的
在arduino中做了试验如下
unsigned int i, j=10000;

void loop() {
     i += 10000;
     j += 10000;
     Serial.print("i:");Serial.println(i);
     Serial.print(]]></description><category></category></item><item><title><![CDATA[编程练习：找到和最大的子序列]]></title><link>https://blog.youkuaiyun.com/span76/article/details/50381747</link><guid>https://blog.youkuaiyun.com/span76/article/details/50381747</guid><author>span76</author><pubDate>Tue, 22 Dec 2015 19:13:15 +0800</pubDate><description><![CDATA[概念：


当前位置：本算法只遍历一边，当前遍历到的位置
子序列：位置连续的几个数

当前子序列：当前要考虑的子序列，这里设定当前子序列是负就要舍弃
临时和最大子序列：遍历没完成前，临时记录的和最大子序列，遍历完成它就是最终结果



思路：
首先，当前子序列为空，当前子序列和为０
开始，遍历
　　　当前子序列和　＋　当前位置书，看结果是正还是负
　　　　　正(或０)]]></description><category></category></item><item><title><![CDATA[首次运行gtest]]></title><link>https://blog.youkuaiyun.com/span76/article/details/50329215</link><guid>https://blog.youkuaiyun.com/span76/article/details/50329215</guid><author>span76</author><pubDate>Wed, 16 Dec 2015 16:08:31 +0800</pubDate><description><![CDATA[看到 cleanfight 下面有 test/unit， 估计是做单元测试用的
一个make （Ubuntu下面） 都编译了，再到 cleanflight/obj/test 生成了很多可执行文件
原来 cleanflight的单元测试不是是stm32上跑了，而是在pc上跑，主要测试函数的功能


找个源元件，原来是用gtest写的，下面就在 cleanflight目录下做 gtest的试]]></description><category></category></item><item><title><![CDATA[Ubuntu下编译Openpilot]]></title><link>https://blog.youkuaiyun.com/span76/article/details/49798119</link><guid>https://blog.youkuaiyun.com/span76/article/details/49798119</guid><author>span76</author><pubDate>Thu, 12 Nov 2015 14:03:00 +0800</pubDate><description><![CDATA[Openpilot  是CC3D 原生固件，下面实践如何编译生成


1）首先准备 git  和arm toolchain， 参照"Ubuntu下编译 ardupilot" http://blog.youkuaiyun.com/span76/article/details/49782015


2）下载openpilot源代码
git clone https://github.com/openp]]></description><category></category></item><item><title><![CDATA[Ubuntu下编译 cleanflight]]></title><link>https://blog.youkuaiyun.com/span76/article/details/49795751</link><guid>https://blog.youkuaiyun.com/span76/article/details/49795751</guid><author>span76</author><pubDate>Thu, 12 Nov 2015 11:13:04 +0800</pubDate><description><![CDATA[cleanflight 基于baseflight, 是支持多悬翼和固定翼飞控程序
MultiWii 的代码违反很多软件工程原则，baseflight 也是，而cleanfligh 力图改善软件质量，提高可维护性。包括


1）通过完善的测试实现更可靠的code, 
2）更好的可维护性
3）更容易加入新特性
4）软件模块化更好，更易复用


cleanflight 支持Naze,]]></description><category></category></item><item><title><![CDATA[Ubuntu下编译 ardupilot]]></title><link>https://blog.youkuaiyun.com/span76/article/details/49782015</link><guid>https://blog.youkuaiyun.com/span76/article/details/49782015</guid><author>span76</author><pubDate>Wed, 11 Nov 2015 17:45:20 +0800</pubDate><description><![CDATA[根据官方文档 http://dev.ardupilot.com/wiki/building-the-code-onlinux/
先安装git ,  而后用 git clone下载源文件
1）下载源代码
sudo apt-get -qq -y install git
git clone https://github.com/diydrones/ardupilot.git

（如果不想cl]]></description><category></category></item></channel></rss>