用Rust程序和eBPF来"窥探"Zoom程序的内容。

Zooming in on Observability with Rust and eBPF

https://blog.redsift.com/labs/zooming-in-on-observability/

网络安全大神Peter Parkanyi用Rust程序和eBPF来"窥探"Zoom程序的内容。最近Zoom因为新冠病毒而大火一把,而且又因为美国政府担心Zoom的服务器绕中国一圈再回到美国引发安全顾虑又大火一把。这个博文值得关注。

一个可以部署AWSLambda服务的简易webapp

A sample webapp project which deploys on AWS Lambda

https://github.com/bachrc/rust-aws-lambda

一个可以部署AWSLambda服务的简易webapp。因为得到SilentByte的启发:https://silentbyte.com/writing-aws-lambda-functions-in-rust

学习笔记:用Rust来写编译程序

Notes on Parsing in Rust

https://blog.wesleyac.com/posts/rust-parsing

学习笔记:用Rust来写编译程序。

slip 0.1.0: 保护你程序的错误代码字符串被逆向工程获取。

slip 0.1.0: protect your error strings against reverse-engineering

https://hub.docker.com/r/michaelfbryan/mdbook-docker-image

slip 0.1.0: 保护你程序的错误代码字符串被逆向工程获取。

安装:

cargo install --path unslip

使用,直接产生秘密字符串:

unslip key

系统环境变量设置:

#### Linux$ export SLIP_KEY=<your key, without quotations> #### Windows$ set SLIP_KEY=<your key, without quotations>
Type-level Rust编程

Type-level Programming in Rust

http://willcrichton.net/notes/type-level-programming/

Type-level Rust编程。英文的学习笔记,大家自己欣赏哈~

Github自动编译Rust二进制代码

Github Actions to build Rust Binaries Automatically

https://github.com/zackify/flydb/blob/master/.github/workflows/build-binary.yml

Github自动编译Rust二进制代码的配置文件的一个例子:

name: Build Binarieson:  release:    types: # This configuration does not affect the page_build event above      - createdjobs:  build_for_mac:    name: MacOS    runs-on: macos-10.15    steps:      - uses: actions/checkout@master      - uses: actions-rs/cargo@v1        with:          command: build          args: --release      - name: Rename binary        run: mv target/release/flydb flydb-macos64      - name: Upload to release        env:          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}        run: |          curl \            -f \            -sSL \            -XPOST \            -H "Authorization: token $GITHUB_TOKEN" \            -H "Content-Length: $(stat -f%z flydb-macos64)" \            -H "Content-Type: application/octet-stream" \            --upload-file "flydb-macos64" \            "https://uploads.github.com/repos/$GITHUB_REPOSITORY/releases/$(jq --raw-output '.release.id' $GITHUB_EVENT_PATH)/assets?name=flydb-macos64"  build_for_pi:    name: Raspberry Pi    runs-on: ubuntu-18.04    steps:      - uses: actions/checkout@master      - uses: actions-rs/toolchain@v1        with:          toolchain: stable          target: armv7-unknown-linux-gnueabihf          override: true      - uses: actions-rs/cargo@v1        with:          use-cross: true          command: build          args: --release --target armv7-unknown-linux-gnueabihf      - name: Rename binary        run: mv target/armv7-unknown-linux-gnueabihf/release/flydb flydb-armv7-pi      - name: Upload to release        uses: JasonEtco/upload-to-release@d648f1babf776de9cad881320bd9e9818fc3b262        with:          args: flydb-armv7-pi application/octet-stream        env:          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}    build_for_android:    name: Android    runs-on: ubuntu-18.04    steps:      - uses: actions/checkout@master      - uses: actions-rs/toolchain@v1        with:          toolchain: stable          target: aarch64-linux-android          override: true      - uses: actions-rs/cargo@v1        with:          use-cross: true          command: build          args: --release --target aarch64-linux-android      - name: Rename binary        run: mv target/aarch64-linux-android/release/flydb flydb-linux-android      - name: Upload to release        uses: JasonEtco/upload-to-release@d648f1babf776de9cad881320bd9e9818fc3b262        with:          args: flydb-linux-android application/octet-stream        env:          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}  build_for_linux:    name: Linux    runs-on: ubuntu-18.04    steps:      - uses: actions/checkout@master      - uses: actions-rs/cargo@v1        with:          command: build          args: --release      - name: Rename binary        run: mv target/release/flydb flydb-linux-amd64      - name: Upload to release        uses: JasonEtco/upload-to-release@d648f1babf776de9cad881320bd9e9818fc3b262        with:          args: flydb-linux-amd64 application/octet-stream        env:          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
rust语言学习笔记:理解structs

Understanding rust lang - structs notes

https://www.staszewski.me/rust-struct-notes/

波兰小伙子Kamil Staszewski 的Rust语言学习笔记。

什么是struct

struct可以让我们创建有内容的数据结构,struct数据结构的写法有点类似Typescript语言中的interface接口, 当然很多别的编程语言的接口的实现也很类似:

struct Player {name: String,health: u32,mana: u32,
}

要实现一个struct我们就要给它创建一个实例,我们依照它的定义用K/V方式给它赋值:

let player1 = Player {name: String::from("Kamil"),health: 100,mana: 100,
};

至此,我们还不能直接用println!宏来打印出来,否则会遇到Player doesn't implement std::fmt::Display: Player cannot be formatted with the default formatte这样的错误。因为这里struct还没有实现它的trait,这就需要我们参照官方文档自己来实现一个。我们可以加这样的注释#[derive(Debug)]也可以用缺省的格式:?,或者在println!宏里面用花括号来表示缺省格式。然后我们可以试一试:

#[derive(Debug)] // annotationstruct Player {    name: String,    health: u32,    mana: u32,}
let player1 = Player {    name: String::from("Kamil"),    health: 100,    mana: 100,};
println!("Players data {:?}, player1);

怎么更新数据:

let player1 = Player {    name: String::from("Kamil"),    health: 100,    mana: 100,};
let player2 = Player {    name: String::from("Gustav"),    ..player1}; // player2 has the same health and mana values as player1

也可以直接给实例的某个键赋值,不过要记得加上mut关键字保证数据结构的实例可以更改:

let mut player1 = Player {    name: String::from("Kamil"),    health: 100,    mana: 100,};
player1.name = String::from("Some other name");

给数据结构struct添加函数(方法):

rust语言添加函数非常方便,首先它又一个可以自引用的语法&self,这个跟JS的this和Python的self非常类似。 我们必须用impl关键字并加上数据结构的名字来'实现'实例,记住我们在函数内部用&self来应用数据机构本身:

struct Player {    name: String,    health: u32,    mana: u32,}
impl Player {    fn multiply_by(&self, n: u32) -> u32 {      self.health * n    }}
let player1 = Player {    name: String::from("Kamil"),    health: 100,    mana: 100,};
println!("Players multipied health {:?}", player1.multiply_by(3));

作者的GitHub:https://www.github.com/staszewski

From 日报小组 BobQ

【Rust日报】2020-05-05:窥探Zoom, Lambda部署, slip等相关推荐

  1. 刷题之旅2020.12.05

    2020.12.05 1.前中后序 递归/非递归 实现 一.使用栈模拟递归实现过程 先序/中序 public List preinOrder2(TreeNode root){if(root==null ...

  2. 第十弹:网络公开课,免费学习资源,2020.07.05更新

    第十弹:网络公开课,免费学习资源,2020.07.05更新 按照个人兴趣整理的网络公开课资源导航网址:http://www.trochilidaetechnology.com/ 以下为[网络公开课]领 ...

  3. 2020.08.05狂人日记:C#计时器与串口通信

    2020.08.05狂人日记:C#计时器与串口通信 串口通信学习笔记 问题及解决 串口通信学习笔记 哔哩哔哩学习"C#上位机开发串口通信编程"笔记 串口发送数据 try //防止出 ...

  4. 【Rust日报】2020-06-08 - Rust/WinRT快速入门

    mlua v0.4 发布并支持Lua 5.4 mlua v0.4 released with Lua 5.4 support https://github.com/khvzak/mlua mlua v ...

  5. 【Rust日报】2020-11-03 《Rust日报》总第1000期

    今日头版 <Rust日报>第1000期,感谢有你 两年半的时间,我们一期期走来,到了今天发行的第1000期.回想我第一次看<Rust日报>,还是在Rust 2018刚推出的时候 ...

  6. rust主播排行_「Rust日报」2019每周精选 • 第四期

    前言: 从2018年开始,我每天会花1个小时关注Rust社区动态,并且在Rust.CC论坛.tg channel.Steemit.GitHub.语雀订阅都开通了Rust日报,分享我每天的见闻,偶尔也夹 ...

  7. AI公开课:18.05.05 施尧耘(阿里云量子技术CS)—清华AI第四讲之《人工智能与量子计算》Quantum课堂笔记——带你了解量子计算

    AI公开课:18.05.05 施尧耘(阿里云量子技术CS)-清华AI第四讲之<人工智能与量子计算>Quantum课堂笔记--带你了解量子计算 导读 清华大学"人工智能前沿与产业趋 ...

  8. 没有终结点在侦听可以接受消息的_【大卫聊股】2019.05.05 周末重要消息分析及下周一走势预判...

    2019.05.05 重要消息: 1. [发改委:适当降低新增分布式光伏发电补贴标准] 显然是利空光伏股. 2. [电报|7只科创基金最终募资金额出炉 首募合计超1200亿]多家基金公司发布公告,科创 ...

  9. DotNetNuke 04.05.05 安装

    预备条件: 1.下载DotNetNuke 04.05.05 安装版或源代码版 http://sourceforge.net/project/downloading.php?group_id=77052 ...

  10. (2013.05.05)N枚硬币找1枚假币

    N枚硬币找1枚假币 ――Neicole (2013.05.05) 0. 问题描述 共有N枚硬币,一个天平,在这N枚硬币中有一枚假币,设法找出该枚假币. 1. 原理示例(减治法) 概要: 如上图所示,假 ...

最新文章

  1. fastJson的使用
  2. 安装您的Sbo Add-on插件
  3. Hollowjars,部署扫描程序以及Wildfly群体为何很棒
  4. 定界符在php中,php定界符如何使用
  5. 使用RNN预测文档归属作者
  6. POJ 1276 ATM凑钱(动态规划)(未解答)
  7. c语言’内存清除函数,c语言常用内存处理函数
  8. 计算机的用户控制,我的电脑我做主——Windows账户家长控制-用户账户控制设置...
  9. 安装linux系统过程中值得记录的内容
  10. jdk1.8新特性_Lambda表达式的引入
  11. kmeans及模型评估指标_使用sklearn评估器构建聚类模型
  12. sessionstorage,localstorage和cookie
  13. 主链增幅最高飚至 152%,主流币却惊现回落;以太坊发币速度持续放缓
  14. 开源项目使用问题集锦
  15. .Net C# Newtonsoft.Json JsonSerializerSettings配置
  16. 改进的协同过滤推荐算法
  17. python删除数组元素_如何删除numpy数组中的特定元素
  18. Android屏幕适配很难嘛?其实也就那么回事,吐血整理
  19. c#字符型转化为asc_C#中使用强制类型实现字符串和ASCII码之间的转换
  20. getc与fgetc的区别

热门文章

  1. WebView如何引用本地字体
  2. 半车模型悬架系统的simulink仿真
  3. 图像标签制作工具之labelImg-windows的安装与使用
  4. ffmpeg之H265解码
  5. 一次监视雷达行业调研报告 - 市场现状分析与发展前景预测(2021-2027年)
  6. matlab 平滑曲线连接_兔学 | MATLAB由离散数据点绘制曲线图像
  7. 火车头文章标题伪原创插件(文章双标题插件)
  8. STM32入门开发: NEC红外线协议解码(超低成本无线传输方案)
  9. 请启封,您的双态IT大会邀请函
  10. 古典钢琴音源插件-COLOVE Products Pianos X1 v2.0 WiN-MAC