? ubuntu ? ? LLVM ? ? clang ? ? C++ ?    发布于 2017-11-14   8891人围观   0条评论

LLVM简介

LLVM是伊利诺伊大学的一个开源项目,LLVM提供了完整的C/C++工具链,Clang属于其中的一个子项目,是 LLVM 原生的 " C/C++/Objective-C"编译器前端,Clang负责完成词法和语法分析,而代码优化和机器代码的生成工作由LLVM后端完成。vim中的插件YouCompleteMe就是利用Clang完成语法分析并给出精确的自动补全和语法错误提示(即静态分析)。

安装

简单来说,Clang 和 CompileRT 这两个子项目为 LLVM 提供了 C, C++, Objective C 和 Objective C++ 的前端及动态库支持,使得我们可以使用 Clang 来编译和构建项目。而要构建Clang,必须先构建LLVM核心库。

可从远程库http://llvm.org/svn/llvm-project/llvm/tags/中找到
比如我使用http://llvm.org/svn/llvm-project/llvm/tags/RELEASE_500/final/

安装必要的包

  1. sudo apt-get install subversion
  2. sudo apt-get install cmake

建立目录,统一存放

  1. cd ~/download/
  2. sudo mkdir llvm-install
  3. cd llvm-install
  • llvm core放在llvm-install目录下
  • clang 放在 llvm目录下的tools目录下
  • compileRT放在llvm目录下的projects目录下

组织结构如下:

  1. llvm/
  2. /tools/clang
  3. /projects/compiler-rt

下载 llvm core库

  1. svn co http://llvm.org/svn/llvm-project/llvm/tags/RELEASE_500/final llvm

下载clang:

  1. cd llvm/tools
  2. svn co http:/
查看更多
发布于 2017-10-25   246人围观   0条评论

common destination: a physcial-layer device identification system

  • classification
  • verification

Exploring the Physical-layer Identification of GSM Devices

device

mobile devices(GSM devices) composed of different model and manufacturer and the same ones

identification signal

transient and the data parts of the acquired GSM signals

experiment:

  • interaction between a GSM Device and a GSM basestation
  • acquisition setup collecting signals
    1. data-related part: GSM Normal Burst including TS bits (26 training sequence bits)
    2. transient part: turn-on and turn-off transients
      title
  • explored features
    title
    • turn-on and ture-off signal transients
      • the instantaneous phase ϕ
      • the instantaneous frequency f
      • the signal power envelope e
        title
    • the signal data part
      • phase and
查看更多
? linux ? ? ftp ? ? server ? ? ubuntu ?    发布于 2017-09-27   502人围观   0条评论

ubuntu 14.04搭建ftp服务器

在实验室搭建ftp服务器,以共享文件和代码。写下过程,以备以后排查问题。

环境

环境:ubuntu 14.04 LTS
网络:校园网

安装vsftpd

如有必要,可以在安装之前先更新软件源sudo apt-get update

  1. sudo apt-get install vsftpd

配置vsftpd

安装完成之后,会出现文件/etc/vsftpd.conf。关于vsftpd的配置就在该文件中完成。

以下阐述以下配置项的作用。

切换目录的权限控制

切换目录的权限控制主要由下面三个字段控制:

  • chroot_local_user 表示是否将所有用户限定在主目录,不允许上切目录。
  • chroot_list_enable 表示是否有例外的情况,如果有例外,则chroot_list_file列出例外的情况
  • chroot_list_file 填写例外的情况

总结如下图:

图片标题

登录的权限控制

登陆的权限控制主要由下面几个字段控制

  • userlist_enable 表示是否启动list来控制用户登陆,如果为NO,表示不使用list进行登录的控制,所有用户均可以登录
  • userlist_deny 表示启动的list是白名单还是黑名单,如果是YES,则是黑名单,名单中的用户均无法登录;如果是NO,则是白名单,只有名单里的用户才可以登录。显然,只有当userlist_enable为YES时,该项才生效
  • userlist_file 名单
  • /etc/ftpusers 是不受任何字段控制,其就是一个黑名单,用以禁止具有非常大的权限的用户的登录,以免造成对系统的入侵和破坏

其他配置项

  • local_root 表示本地用户登入,将被切换到定义的目录下,如果不设置,则分别为各用户的家目录
  • allow_writeable_chroot 表示是否允许登录用户对该目录有写权限。如果是NO,则表示登录用户对目录不能有写权限,如果有,那么登录时会报错500 OOPS: vsftpd: refusing to run with writable root inside chroot();如果
查看更多
? Lavarel ?    发布于 2017-05-29   359人围观   0条评论

平台:win10

在使用Lavarel之前,需要安装Lavarel
在安装Lavarel之前,需要搭建一个叫做homestead的环境
在搭建一个叫做homestead的环境之前,需要一个叫做vagrant的自动化安装虚拟机的东东

安装虚拟机

virtual box和vmware均可,推荐使用virtual,因为vmware要钱,虽然有破解版,但是有的插件要钱。。到后面会很麻烦。

安装vagrant

Vagrant是构建和管理虚拟机环境的命令行 工具。Vagrant自动化功能,降低了开发环境设置时间,提高了生产平均水平。vagrant从这里下载对应平台版本就行。

利用vagrant安装laravel/homestead的虚拟机(box)

我们需要利用vagrant工具,安装一个叫做lavarel/homestead的虚拟机(box),这个虚拟机(box)是Lavarel官网定制的开发环境,其中包括

  • Ubuntu 16.04
  • Git
  • PHP 7.1
  • Nginx
  • MySQL
  • MariaDB
  • Sqlite3
  • Postgres
  • Composer
  • Node (With Yarn, Bower, Grunt, and Gulp)
  • Redis
  • Memcached
  • Beanstalkd
  • Mailhog
  • ngrok

可以打开cmd或者powershell或者git bash,然后输入
vagrant box add laravel/homestead,选择对应虚拟机,即可安装。

墙内无法通过这个下载,会爆出如下图中的一大堆错

图片标题

直接复制显示的信息中的网址,然后搭梯子,进行下载,可以将下载下的文件重命名为virtual.box

随后在当前目录下,输入:
vagrant box add laravel/homestead virtual.box

如果出现success字样,则成功

如果要删除之前安装的box,比如删除laravle/homestead,则输入:
vagrant box remove laravel/homestead

下载 homehead

  1. cd ~
  2. git clone https://g
查看更多
? GNU Radio ?    发布于 2017-04-14   930人围观   0条评论

译文原文:http://gnuradio.org/files/builds/manual/page_stream_tags.html
仅摘取其中关于绝对item数目的片段

在数据流中,每个block的work函数会给一个从0到N-1的buffer缓存区,这是数据流中的相对索引。绝对的索引指,流图开始后,通过该block的item数目,最小单位为一个item。每个输入流会有一个读入item总数目的概念,每个输出流会有一个写入item总数目的概念。可以用下面两个API来获取:

  1. unsigned long int nitems_read(unsigned int which_input);
  2. unsigned long int nitems_written(unsigned int which_output);

值得注意的是,不管是read还是write的数目,都只会在每次调用work函数之后才会更新这两个值。因此如果想在某次work函数中,获取该次数据流中第0个输出端口的第i个item的绝对索引,那么可以用for循环遍历所有输出items,然后使用nitems_written(0) + i,那么就获取了第0个输出流的第i个item的绝对索引。

  1. int base_num = nitems_written(0); // 第0个端口已经流出的item的数目
  2. for(int i=0;i<noutput_item;i++){
  3. int n = base_num + i; // 第i个item的绝对索引
  4. // do something about i-th item
  5. }
查看更多