linux 学习笔记

TODO - 待整理

一些概念

  • bytes stream 字节流

    linux 执行一个程序时会自动打开三个流:标准输入流、标准输出流、标准错误流

    输出流用 “>” 或 “>>” 表示

    输入流用 “<” 表示

    错误流用 “>&” 表示

      // 输出文本流到屏幕
      $ echo '我是小赖'
      // echo 输出信息到 a.txt
      $ echo '我是小赖' > a.txt
      // 追加文本流到 a.txt
      $ echo '我才是小赖' >> a.txt
    
      // 输出命令执行结果文本流到屏幕
      $ ls
      // 重新定向, 这样 ls 命令的输出文本流就会写到这个文件上
      $ ls > a.txt
      // 若 a.txt 已存在,则将ls 命令的输出文本流追加到这个文件上
      $ ls >> a.txt 
    
      // 输入文本流
      $ cat < a.txt
      // 复制 a.txt 到 b.txt
      $ cat < a.txt > b.txt
    
      // 输出错误,假定 wrongDir 是不存在的目录
      $ cd void >& a.txt
    
  • pipe 管道

    使用管道,可以将一个命令的输出流当做另一个命令的输入流

    管道用 “|” 表示

      // 输出 "cat > a.txt" 当做命令 "wc" 的输入
      // wc 即 word count:输出文本的行、词和字符总数
      $ cat < a.txt | wc
    

阅读全文

NODEJS-Buffer对象

  • 构造一个指定大小的 buffer

      var newBuffer = new Buffer(1024);
      // var len = newBuffer.length;
    
  • 用指定值初始化 buffer 的内容

      // 填充第10字节开始的内容为 1 
      newBuffer.fill(1, 10);
      // 填充第10~20字节的内容为 2 
      newBuffer.fill(2, 10, 20);
    
  • 用数组初始化 buffer 的内容

      // 用数组 [0, 1, 2] 初始化
      var newBuffer = newBuffer([0, 1, 2]) 
    
  • 用字符串初始化 buffer 的内容

      // 用字符串 'xiaolai' 初始化
      var newBuffer = new Buffer('xiaolai');
      // 指定编码, 默认为 utf8,可选 ascii/utf8/utf16le/ucs2/base64/hex 等编码格式
      // var newBuffer = new Buffer('xiaolai', 'utf8');
    

阅读全文

使用 FormData 模拟表单控件

  • 创建一个新的 FormData 对象,然后使用 append() 添加字段:

      var form = new FormData();
      form.append('name', 'xiaolai');
      form.append('age', 18);
      // 使用 ajax 发送
      var req = new XMLHttpRequest();
      req.open('POST', 'http://laispace.com/test');
      req.send(form);
    

    FormData.append(key, value)中 value 可以是string/Blob对象/File对象

  • 利用已有的 form 创建 FormData 对象进行格式化

      var myForm = document.getElementById('myForm');
      var form = new FormData(myForm);
    

    继续使用 FormData.append() 添加字段,或使用 ajax 发送表单

  • 异步上传文件

    若 myForm 中有用户选择的文件,要进行异步上传:

      var req = new XMLHttpRequest();
      req.open('POST', 'http://laispace.com/test', true);
      req.onload = function (e) {
          if (req.status === 200) {
              console.log('文件已成功上传!')
          } else {
              console.log('啊噢~ 文件上传失败!')
          }
      }    
    

阅读全文

grunt 学习笔记

  • 配置 Gruntfile.js

    grunt.initConfig({
      // 读取 package.json 文件
      pkg: grunt.file.readJSON('package.json'),
    
      // 其他配置,如下面的 jshint/uglify
      // ...
    });
    
  • 设置 jshint 代码审查

    执行命令 ~# grunt jshint

      jshint: {
            options: {
                // 使用 jshint-stylish 高亮错误
              reporter: require('jshint-stylish') 
            },
          // 配置任务启动时要验证的文件
           build: ['Grunfile.js', 'src/**/*.js']
         }
    

阅读全文

NODEJS-fs模块操作文件系统

使用 fs模块 对文件/目录进行操作

  • 读取文件内容

      // fs.readFile(filename, [options], callback) 
      // options 中的 flag 默认为 r,表示读取文件
      fs.readFile('test.txt', function (err, data) {
          if(err) throw err;
          console.log('文件内容是:', data);
      })
    
    // fs.readFileSync(filename, [options]) 
    // 同步方式读取
    try {
        var data = fs.readFileSync('test.txt');
        console.log('文件内容是:', data);
    } catch (err) {
        throw err;
    }

阅读全文