FLTK支持中文

方法一:

FLTK已经支持unicode了,所以可以直接通过使用unicode的方式来使用中文字符:

char utf8[10] = {0xE6, 0xB5, 0x8B, 0xE8, 0xAF, 0x95, 0x00}; // 表示“测试”

方法二:

使用FLTK封装好的函数来转换字符到utf8编码字符串,如下:

#include <FL/Fl.H>
#include <FL/Fl_Window.H>
#include <FL/Fl_Box.H>

#include <wchar.h>

int main(int argc, char **argv) {
    Fl_Window *window = new Fl_Window(300,180);
    const size_t MAX=256;
    wchar_t wcs[256] = L"我是一个按钮";

    char utf8[MAX] = {0};
    fl_utf8fromwc(utf8, MAX, wcs, wcslen(wcs));
    Fl_Box *box = new Fl_Box(20,40,260,100,utf8);

    box->box(FL_UP_BOX);
    box->labelsize(36);
    box->labelfont(FL_BOLD+FL_ITALIC);
    box->labeltype(FL_SHADOW_LABEL);

    window->end();

    window->show(argc, argv);

    return Fl::run();
}

注意方法二需要添加编译命令:-finput-charset=GBK

卡尔曼滤波

卡尔曼滤波

卡尔曼滤波器的操作包含两个阶段:预测和更新。

Kalman滤波包括两个阶段:预测和更新。在预测阶段,滤波器利用上一状态的估计做出对当前状态的估计;在更新阶段,滤波器利用在当前状态的观测值优化在预测阶段获得的预测值,以获的一个更精确的当前状态的估计。

Note:

用$n-1$帧的状态预测$n$帧的状态,再由第$n$帧的输出更新第$n$帧的状态。

想要用kalman滤波,要知道前一时刻的状态估计值$x$,当前的观测值$y$,还得建立状态方程和量测方程,有了这些就可以运用kalman滤波了。

卡尔曼有三种用途:回归、滤波和预测。

  1. 回归问题

    给定多个自变量、一个因变量以及代表它们之间关系的一些训练样本,如何来确定它们的关系的问题为回归问题。
    
  2. 滤波问题
  3. 预测问题

完整内容请查看:kalman@githubPDF下载链接本站备份链接

Markdown 入门参考

编辑/整理:LearnShare(学习,分享,进步)Edit by BlancheLin

    • -

关于Markdown

1.Wiki: Markdown

Markdown 是一种轻量级标记语言,创始人为 John Gruber 和 Aaron Swartz。它允许人们“使用易读易写的纯文本格式编写文档,然后转换成有效的 XHTML(或者 HTML)文档”。这种语言吸收了很多在电子邮件中已有的纯文本标记的特性。

2.编写 Markdown 就如同编写纯文本一样简单、纯粹:

  • 它方便修改和发布;
  • 很容易转换为 HTML 代码;
  • 有众多语言及应用的相关扩展;
  • 在 GitHub 等环境中有很好的应用;
  • 是编写文档、记录笔记、撰写文章的合适选择。

3.Markdown 完全兼容 HTML 语法,可以直接在 Markdown 文档中插入 HTML 内容:

1 2
3 4

- 阅读剩余部分 -

关于使用CubieBoard开发板进行图像采集的总结

1. CubieBoard 开发板系统安装

首先,下载相关资料,包括系统镜像、Win32DiskImager、SecureCRT等,下载页面见附录。然后将系统镜像解压出来,通过以下工具或方法写到TF卡中。 法1:使用Win32DiskImager工具安装; 法2:使用DD命令恢复,比如:

dd if= cubieboard2-linux3.3-SD-card-image of=/dev/sdX

在执行上述命令前需要将TF卡挂载到linux系统上,并且明确TF卡到底是哪个盘(fdisk -l)。 取出TF,安装到机器上,然后按照要求运行。 系统安装完成后,接下来就需要配置开发环境了。 (1)安装USB2TTL驱动;(2)启动cb,查看串口端口,配置串口相关参数,在端口设置选项卡中设置速率为“115200”;(3)打开SecureCRT,配置相关参数。

- 阅读剩余部分 -

Linux相关积累

终端自动补全:

sudo apt-get install bash-completion

make: yacc: Command not found:

sudo apt-get install byacc

切换至超级用户:

sudo -s

build-essential程序包:

sudo apt-get install build-essential

更新软件:

sudo apt-get upgrade

Linux安全删除文件:

shred -u file
shred -u -z file
shred /dev/sdx

shred命令详细参数:

-f,--force,更改权限允许写入(如有必要);
-n,--iterations=N:重写N次,默认为3次;
--random-source=FILE:从指定文件读取数据;
-s,--size=N:将文件粉碎为固定大小 (可使用后缀如KMC等);
-u,--remove:重写后截短并移除文件;
-v,--verbose:显示进度;
-z,--zero-add:用0覆盖数据;
–help:显示帮助;
–version:显示版本信息。

gcc相关

-E 预处理(Only run the preprocessor)
-S 编译为汇编代码(Only run preprocess and compilation steps)
-c 生成目标文件(Only run preprocess, compile, and assemble steps)
-o 写到文件(Write output to <file>)

利用ffmpg转换图片格式

ffmpeg -f image2 -i ffc5948a99b0d622ce749c807073cb8b.png ffc5948a99b0d622ce749c807073cb8b.jpg

利用ffmpg提取图片

ffmpeg -i "video.avi" -r 12 -vf "transpose=2, transpose=2"  "out/%07d.jpg"

注:

-r 12 设置帧率为12fps
transpose=2 表示旋转90度

git添加submodule

git submodule add <url> <path>
git submodule add git://github.com/ejmr/php-mode.git .emacs.d/plugins/php-mode

将github中的submodule更新到最新revision

cd submodule_name
git checkout master && git pull
cd ..
git add submodule_name
git commit -m "updating submodule to latest"

Mac下压缩忽略一些文件,如“.DS_Store”

tar -c --exclude='._*' --exclude='.svn' --exclude='.git' --exclude='.DS_Store' --exclude='*.bak' --exclude='*~' -vjf "$@"

Emacs中转换文件编码(转为utf-8)

C-x C-m f utf-8-unix RET

也可另存为:C-x C-m c RET C-x C-w RET

利用pip更新服务端shadowsocks

pip install --upgrade shadowsocks

linux查看端口被哪个进程占用

lsof -i:<port number>

VPS上编译安装emacs 24.4

# wget http://ftp.gnu.org/gnu/emacs/emacs-24.4.tar.xz
# tar xJvf emacs-24.4.tar.xz
# ./configure --disable-largefile --with-x-toolkit=motif --without-toolkit-scroll-bars   --without-xaw3d --without-xim --without-sound --without-pop --without-xpm --without-tiff --without-rsvg --without-gconf   --without-gsettings --without-selinux --without-gpm --without-makeinfo --without-x

mosh在Linux下遇到的locale问题:

The locale requested by LANG=en_US.UTF-8 isn't available here.
Running `locale-gen en_US.UTF-8' may be necessary.

The locale requested by LANG=en_US.UTF-8 isn't available here.
Running `locale-gen en_US.UTF-8' may be necessary.

mosh-server needs a UTF-8 native locale to run.

Unfortunately, the local environment (LANG=en_US.UTF-8) specifies
the character set "US-ASCII",

The client-supplied environment (LANG=en_US.UTF-8) specifies
the character set "US-ASCII".

locale: Cannot set LC_ALL to default locale: No such file or directory
LANG=en_US.UTF-8
LANGUAGE=en_US
LC_CTYPE="en_US.UTF-8"
LC_NUMERIC=zh_CN.UTF-8
LC_TIME=zh_CN.UTF-8
LC_COLLATE="en_US.UTF-8"
LC_MONETARY=zh_CN.UTF-8
LC_MESSAGES="en_US.UTF-8"
LC_PAPER=zh_CN.UTF-8
LC_NAME=zh_CN.UTF-8
LC_ADDRESS=zh_CN.UTF-8
LC_TELEPHONE=zh_CN.UTF-8
LC_MEASUREMENT=zh_CN.UTF-8
LC_IDENTIFICATION=zh_CN.UTF-8
LC_ALL=
Connection to onijiang closed.
/usr/bin/mosh: Did not find mosh server startup message. 

解决方法:

  1. 使用mosh时添加参数--server="LANG=$LANG mosh-server"
  2. 使用命令设置本地locate为`en_US:localedef -v -c -i en_US -f UTF-8 en_US.UTF-8`

博客自动备份脚本(使用ssmtp和mutt):

#!/bin/bash
now_date=$(date +"%F")

#Email recipient(s), separated by space
recipient="i@jiya.io"

#Email subject and message 
subject="jiya.io_$now_date"
echo $subject

message="此邮件为博客定期备份邮件,每周六00:00启动,此次备份时间:$(date +"%F %T")"

#Motion target files path
backpath="/tmp/"

#Motion target directory path
blogpath="/var/www/htdocs"

####################################
echo "Running backup_jiya.io.sh ..." `date`

# compress usr directory
destfile="$backpath$subject.tar.bz2"
echo $destfile
rm -rf $destfile

echo "Creating tar file... " `date`

pushd $blogpath
tar jcf $destfile jiya.io
popd

# send mail
echo "Sending mail to recipient... " `date`
echo $message | mutt -s $subject $recipient -a $destfile

iterm配置utf8编码,本地终端中文不乱码,ssh远程中文乱码,编辑~/.vimrc文件,加上如下几行:

set fileencodings=utf-8,ucs-bom,gb18030,gbk,gb2312,cp936
set termencoding=utf-8
set encoding=utf-8