Rust    2021-04-14 14:29:32    12    0    0
# Vector ## 新建vector ```rust let v: Vec = Vec::new(); let v = vec![1, 2, 3]; ``` ## 修改vector ```rust #![allow(unused)] fn main() { let mut v = Vec::new(); //一定要mut v.push(5); } ``` ## 访
Rust    2021-04-14 13:15:05    30    0    0
# 所有权 所有运行的程序都必须管理其使用计算机内存的方式。 有些语言具有垃圾回收机制,在程序运行时不断地寻找不再使用的内存(比如Java); 有些语言中,程序员必须亲自分配和释放内存(C/C++)。 Rust 则选择了第三种方式:通过所有权系统管理内存,编译器在编译时会根据一系列的规则进行检查。在运行时,所有权系统的任何功能都不会减慢程序。 ## 所有权规则 首先,让我们看一下所有权的规
Rust    2021-04-07 19:45:08    22    0    0
# 变量与可变性 ## 可变性 > 变量默认是不可改变的(immutable)。这是推动你以充分利用 Rust 提供的安全性和简单并发性来编写代码的众多方式之一。当变量不可变时,一旦值被绑定一个名称上,你就不能改变这个值。 ```rust fn main() { let x = 5; println!("The value of x is: {}", x); x =
Rust    2021-04-01 11:42:33    27    0    0

安装

按照教程指导,应该执行命令来
$ curl --proto '=https' --tlsv1.2 https://sh.rustup.rs -sSf | sh 来进行安装。。。不过我看Arch Linux已经打包了,那就用Arch仓库里的吧。

  1. sudo pacman -S rustup
  2. rustup toolchain install stable

第一条命令会把rustup安装到/usr/bin/rustup,第二条命令会把rust工具链(比如编译器,调试器)的稳定版安装到~/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/

Windows用户需要下载Rust安装工具,如果直接执行安装工具会要求安装msvc,除非只想生成GNU ABI的程序。因此,安装Rust之前,需要去微软网站上下载msvc安装器

如果网络环境不好,这里有一份rustup-init.exe的备份。msvc太大了,自行解决

rust离线安装包下载地址:https://forge.rust-lang.org/infra/other-installation-methods.html#standalone-installers

Hello World!

当学习一门新语言的时候,使用该语言在屏幕上打印 Hello, world! 是一项传统,我们将沿用这一传统!

对于单文件的程序,可以直接新建一个文件main.rs,然后写入以下内容

  1. fn main() {
  2. println!("Hello, world!");
  3. }

保存并退出后,执行rustc main.rs,就会生成一个名字为main的可执行文件。执行./main即可执行文件,此时会在终端看到输出。

  1. Hello, world!

注意:
1. 当看到符号 ! 的时候,就意味着调用的是宏而不是普通函数
2. Rust 的缩进风格使用 4 个空格,而不是 1 个制表符(tab)。

Hello, Cargo!

那么对于多文件的大项目要如何管理/构建呢?Rust官方

2020-12-19 12:00:08    189    0    0

手机上买了极客帮的课程,但是手机屏幕太小了,希望在电脑上看。但是电脑上打开极客帮会弹窗,不管是Linux还是ChromeOS上,都会有弹窗,而且每打开一个页面都会弹。

极客帮ChromeOS弹窗

Geekbang Linux弹窗

作为一个刚学了几天前端的新手。。。我决定解决一下这个问题。在Chrome中打开开发者工具,看看到底发生了什么。发现console下有个报错。

console log

报错内容Not allowed to launch 'bytedance://dispatch_message/' because a user gesture is required.。不难发现是字节跳动想打开一个东西,我只是想看看极客帮,把头条屏蔽了还是没什么问题的。那么问题来了,这是哪个文件发出来的呢。

切换到Network,refresh一下。

toutiao

toutiao.js后就dispatch_message了,证据确凿,于是点了一下toutiao.js,复制了以下Request URL。加入广告拦截插件,比如AdBlocks,顺利解决。

adblocks

2020-11-25 04:53:25    73    0    0

0. 背景

这个项目是配合NotiSyncNotiSync-Server使用的,关于这两个项目的介绍在这里。在做到通知同步的通知的同时,增加手机信息概览和短信回复的功能。下面是使用方式的简单展示

1. 使用方式

程序启动时会直接进入一个类似于登录页面的界面,这里就是配置信息,包含通信协议,服务器地址,服务器端口,和UUID。协议支持http和https,地址可以是IP地址,也可以是域名。
LoginView

配置好后即可使用用登录按钮登录。

登录后即进入主界面:
Detail

左侧是软件能查看的信息,分别是手机详情,手机通知和手机短信。主界面默认停留在手机详情页。

当点击左侧的Notifications时,进入手机通知页,这里将显示所有在本客户端启动之后手机收到的通知:
Notifications

当点击Messages时,进入手机短信页。这里将显示所有的手机短信,并且可以当场回复短信。在最右侧下方输入框输入后点击Send按钮,短信就会发送出去。如果想要发送的联系人不在已有对话框中,可点击New Message以新建短信,在输入对方电话号码后即可向对方发送短信。
Messages

2. 注意事项

v0.2依然不是正式版,在短信上存在功能性Bug,界面性能也需要优化。

NanoPi R2S R2S systemd Linux Ubuntu 计算机网络 软路由    2020-11-25 01:12:03    152    0    0

0.背景

旁路由折腾熟悉之后,我又开始觊觎软路由的方便,于是不久前借着双十一,下单了早有耳闻的NanoPi R2S,177大洋,有散热片有风扇有外壳,还算划算。奈何我跟OpenWRT八字不合,上次树莓派是半天LUCI进不去,这次是FriendWRT官方固件砍掉了tproxy模式。在重新编译固件依然无法成功富强之后。我又掏出了祖传技能,直接用了FriendlyCore(基于Ubuntu)秒杀了富强网关的需求。这个方式也非常通用,不只是R2S,也不仅限于Ubuntu,理论上可以将任何一个双网口的运行Linux并且使用Systemd的机器变成软路由。

1. 配置Wan侧

刷好FriendlyCore之后直接插卡开机,然后就能在路由器管理页面看到该设备的ip地址。我们ssh上去就可以进行配置了,默认用户名和密码都是pi。

配置文件参考:
systemd-network

对应这台机器就是直接在终端执行

  1. sudo vim /etc/systemd/network/eth0.network

然后把下面的内容复制进去。

  1. [Match]
  2. Name=eth0
  3. [Network]
  4. DHCP=ipv4

2. 配置Lan侧

一个软路由本质上就是开启了DHCP服务,DNS服务,网络层包转发的多网口计算机。因此在常规的配置中,通常会配置dnsmasq来做DHCP服务器,并同时担任DNS服务器。然后通过sysctl打开ip包转发,然后用iptables完成包的转发。

但是现在,systemd都包含了这些功能,不需到别的地方到处配置,也不需要再多装什么包,只需把systemd配置好就能完成这些。

我们依然是进入终端,执行

  1. sudo vim /etc/systemd/network/eth1.network

然后把下面的内容复制粘贴进去后,保存并退出。

  1. [Match]
  2. Name=eth1
  3. [Network]
  4. Address=192.168.25.1/24
  5. DHCPServer=true
  6. IPMasquerade=true
  7. [DHCPServer]
  8. PoolOffset=100
  9. PoolSize=50
  10. EmitDNS=yes
  11. DNS=223.5.5.5

/etc/syst

树莓派    2020-08-27 14:46:27    236    0    0

本来想在Ubuntu上编译安装Kodi,实现类似LibreELEC的效果。折腾一天发现和apt安装区别不大,不仅卡,而且Ubuntu这个是Server版本,默认最多1080分辨率,看起来很模糊。本文仅记录折腾过程。

操作步骤主要参考:
xmbc项目README

1. 下载源代码

  1. git clone https://github.com/xbmc/xbmc kodi

2. 安装依赖

  1. sudo apt install autoconf automake autopoint gettext autotools-dev cmake curl openjdk-8-jre gawk gcc g++ cpp gdc gperf libasound2-dev libass-dev libavahi-client-dev libavahi-common-dev libbluetooth-dev libbluray-dev libbz2-dev libcdio-dev libcec-dev libp8-platform-dev libcrossguid-dev libcurl4-openssl-dev libcwiid-dev libdbus-1-dev libegl1-mesa-dev libenca-dev libflac-dev libfontconfig1-dev libfmt-dev libfreetype6-dev libfribidi-dev libfstrcmp-dev libcrypt-dev libgif-dev libgles2-mesa-dev libglew-dev libglu1-mesa-dev libgnutls28-dev libgpg-error-dev libgtest-dev libiso9660-dev libjpeg-dev liblcms2-dev liblirc-dev libltdl-dev liblzo2-dev libmicrohttpd-dev libmysqlclient-dev libnfs-dev libogg-dev libomxil-bellagio-dev libpcre3-de
树莓派 Linux Ubuntu 计算机网络 软路由    2020-08-16 00:20:15    432    0    0

想拿树莓派搭热点试试看,玩了一下OpenWrt,发现一旦进不了luci就会很麻烦。想起几个月前就有新闻的Raspberry Pi OS的64位,去看看怎么样了,发现还没发布。看到Ubuntu有arm 64的image,顺手体验一下。

0. 环境

树莓派4, 4G版本
系统镜像Ubuntu server 20.04

目的:有线网口作为wan口连接到互联网,无线网口作为热点发射WiFi。

1. 装系统

安装

下好的镜像格式是img.xz,解压后用Win32DiskImager烧录。也可以直接不解压,使用balena-etcher烧录。烧录完成后插电就能开机,第一次开机会自动运行一些东西,当屏幕出现Ubuntu Login即可登录。默认用户名和密码都是ubuntu。如果出现登录失败,是正常现象,等一两分钟就好了。

换源

默认的Ubuntu镜像源在海外,速度太慢了,这里可以换成清华源

  1. sudo sed -i 's/http:\/\/ports.ubuntu.com\/ubuntu-ports/https:\/\/mirrors.tuna.tsinghua.edu.cn\/ubuntu-ports/g' /etc/apt/sources.list

关闭自动更新

修改配置文件/etc/apt/apt.conf.d/10periodic,将所有值改为0(实际上也就Update-Package-Lists是1)

或者使用命令替换:

  1. sudo sed -i 's/\"1\"/\"0\"/g' /etc/apt/apt.conf.d/10periodic

切换时区

  1. sudo timedatectl set-timezone Asia/Shanghai

2. 搭建WiFi热点

首先,安装所需要的包sudo apt install hostapd dnsmasq,然后将下面的文件分别更改为后面列出的内容。下面命令无特殊说明都在root权限下执行。

配置ap

(1) vim /etc/hostpapd/hostapd.conf

把下面的内容复制粘贴进去,注意更改wifi名称和密码

  1. interfa
2020-07-12 01:08:45    124    0    0

零、个人期待

Deepin是我第一个长期使用的Linux发行版,那时候我刚大二,deepin还在15.2,我还在用四代低压的i5。这个发行版用起来真的非常舒适,比Ubuntu漂亮,比Windows流畅。而且QQ的调教非常好,满足了看各种班级群学院群的需求。

如今我早已毕业,我已经入了Arch邪教,但是对于这个领我进入Linux大门的发行版还是非常怀念。今天的Deepin已经成为了统信的一部分,曾经的专业版Deepin变成了UOS。上次deepin v20beta发布体验了一下,Bug有点多,那么对于这个系出同门的UOS,我希望。。。能更稳定且更方便。

一、系统自带功能

0. UI

进入系统,点开启动器,映入眼帘的是一堆预装好的应用程序:

UOS启动器

整个系统界面和图标都选择了圆角的设计,这本身没什么,毕竟Bug Sur也用的大圆角,但是。。。圆角能不能小一点!或者自定义一下,这样的圆角弧度真的太大了,在1080的屏幕上我都觉得太大了。而且系统自带的圆角和第三方应用的圆角真的十分不和谐,而且自带的浏览器,他完全是直角,实在是不统一啊。

圆角与直角

除了UI之外,我主要挑几个对于我而言,相比于我印象中的Deepin V15,功能性的变化比较大的地方讲讲。

2. 截图/录屏

这两个应用在之前是一个,我不太清楚合并之后有什么好处。不过快捷键是和之前一样的Ctrl+Alt+A是截图,Ctrl+Alt+R是录屏。

截图我个人还是更喜欢之前,接近QQ截图的那个界面,不过跟随系统做大圆角无可非议,这个见仁见智了。

录屏功能中有一点特别不错,在录制之前就出现了选择框,而且更重要的是,还能开启按键显示,这对录一个简短的教程来说简直不要太方便。甚至还能开启前置摄像头,配上PPT什么的直角露脸演讲。

这是一小段录屏演示
截图录屏_dde-file-manager_20200711222926.mp4

只是不知为何开不了麦克风也无法打开录制系统声音,之后试试是不是Bug。

3. 浏览器

这个浏览器吧,国内惯例,Chrome套壳。地址栏输入chrome://version就会跳转到chrome://version/,并显示出版本信息。UA包含3

1/2