吐槽网络小说2

看网络小说总结出几个糟点二
  1. 穿回现代十几年前,抄小说,抄歌曲,抄音乐成为名利双收的土豪。然后遇到盗版的,马上深恶痛觉,依靠法律打击云云。
  2. 半渣男模式,一边宣称对爱情忠,一边僚女不断。
  3. 女生小说99%都是被负心汉害死,穿回去后,身边人全是心机婊。各种心眼,可怕……

ThinkPad笔记本产掉触控板,但是不关掉小红点

我的ThinkPad笔记本电脑安装上 ubuntu后,输入时,总是一不小心,手就碰到了触控板,导致了光标乱飞,产生输入错误,肿么办呢?

在网上查到了一个办法是执行。
1
2
$ sudo rmmod psmouse  # 关闭touchpad
$ sudo modprobe psmose # 打开touchpad
然而发现,执行sudo rmmod psmouse后,竟然把小红点也关上了。那万一木有外接鼠标时,电脑就不好用了。
1
$ synclient touchpadoff=1  # 只关掉触控板,而不会关掉小红点。

好了,可以上以一句放在.profile文件行尾就行了。

广东省内游之一,没有海

以下全部摘抄自网上,没有亲自去过

一. 乳源大峡谷, 深圳开车330KM

1. 长达15公里,谷深300多米,有“广东最美峡谷”的美誉。这个峡谷最大的特点便是奇美奇险。而且这里也特别适合徒步!
身临其境,你才能感受到它的特别。据网友评论说是一个超出你期待的景点!
2. 地址:韶关市乳源瑶族自治县西南68公里的大布镇
3. 自驾:途径京港澳高速、乐广高速,用时约5h
4. 推荐美食:鱼丸、鱼面、马鲛鱼饭、猪肠碌、海胆饭、泥焗鸡

乳源大峡谷

一.2分支 仙门奇峡,韶关市乳源瑶族自治县洛阳镇境内
风景独特,很多奇石异景,进入景区犹如进入仙境般的感觉,在这里可以零距离接大自然,是一个避暑胜地,旅游最佳目的地。
其中的情侣峡竹筏漂流,全长约3公里,峡谷两岸的悬崖峭壁千姿百态。山谷间有细流汇成的河,河面倒映着山,天然石门,让
你感叹大自然的鬼斧神工。

仙门奇峡

一.3分支 地址:韶关市曲江区枫湾镇 枫湾小桂林

风湾镇1
风湾镇2
风湾镇3
风湾镇4
风湾镇5
风湾镇6

二. 英西峰林 深圳开车280KM, 距离乳源90KM

1. 英西峰林地处英德西南部的九龙、黄花两镇间,既有喀斯特地貌的淡墨山水,又有小桥流水般的农家田园,特别
适合自驾、徒步或骑行。正确的游玩姿势当然是徒步,穿过一道道乡间小路,看看客家人的日常生活,满足你逃离城
市的心愿。如果走累了,就花十几块钱,乘坐竹筏顺溪水而下,既惬意,又能将两岸美景尽收眼底~
2. 地址:清远英德市西南60公里的九龙
3. 自驾:途经京港澳高速、许广高速等,用时约4.5h
4. 推荐美食:黄花鸡、九龙豆腐、英德红茶、英德东乡蒸肉   
5. 周边游玩推荐 :连南千年瑶寨,“广东十大最美古村落”之一(约两小时车程)
    地址:英德市区西南60多公里的九龙、明迳、岩背三镇一带
    自驾游路线:清连高速,走S348省道,一个多小时车程可到达九龙镇。

英西峰林

二.2 分支,洞天仙境
,清远市英德市九龙镇, 步行从洞口沿着栈道往山洞里面走,洞中豁然开朗,洞顶有两个通天大洞,每天中午
11点半左右,光线会透入洞里,映射到水面上,眼前出现山、水、石、钟乳、瀑布,景色迷人,宛如仙境。可以选择坐
小船进去回程走路出来。不上山顶的话,景点路程并不远,里面的码头是一片竹林,很悠闲很舒服,适合带老少前来游玩。

英德洞天仙境

三. 清泉湾, 开车200KM, 离英西峰林68KM

1.【推荐理由】度假区交通便利,离县城只有五公里的距离。区内的娱乐项目也很丰富,有山泉水城、竹林极速滑水漂流、度
  假酒店,还有集趣味、游乐、挑战于一体的“欢乐智勇向前冲”、大型水路拓展训练基地、特色餐厅、会议中心等项目和配套
  服务设施,是一个集观光度假、休闲疗养、商务会议、特色美食、运动健身、生态旅游为一体的大型生态旅游度假区。
2. 景区电话:0763-5838666
3. 小贴士:1、看点:漂流、泡温泉,休闲度假
4. 自驾线路:从深圳走广深高速,再到北二环高速,上广清高速到清远市后,过北江大桥右转,经先锋桥即可看到前往清泉湾的指示牌;
   预计3个半小时可到

清泉湾大门
清泉湾1
清泉湾2
清泉湾3
清泉湾4

四. 从化白水寨 深圳开车160KM,

1.【推荐理由】白水寨,因拥有中国内地落差最大的瀑布群而出名。景区内修建有一条长约6.6公里的木栈道,长度为全国之最。游人可
  沿着木栈道登山,一路前行,一边呼吸森林负氧离子,一边欣赏仙瀑美景。
2. 景区电话:020-82821188
3. 小贴士:1、交通:自驾车深圳——广州,走机场高速,接街北高速,在从化街口出口转105国道,再沿S355省道(往增城方向)前行,即
   可到达白水寨景区。车程约1小时,交通便捷,路况良好。
4. 美食:古法烧鸡、手打猪肉丸、榄角蒸水库鱼头

增城白水寨1
增城白水寨2
增城白水寨3
增城白水寨4
四.1 分支 不远是石门国家森林公园
不用下车就可买票进入(成年人30元,车辆进入公园10元,65岁以上老人免费)。
开车直接进入公园游览,上午先看了石门景区,在桃花源的景点有小面积的花圃,开车一路走下去,直到巍峨石门、玫瑰园等景点处。如果再往
三仙会堂和天堂顶均需徒步,而且时间较长,后未去。
上午11:30左右开车往石灶景区方向,印象最深的是天池花海,花的品种和面积确实不少。
下午,4点30左右,游览结束,开始往回返程。
体会: 1. 由于可以开车自驾进入景区,所以陪同老人前往,特别合适。
2. 这里也是一个徒步的好地方,有山有水有步道,尤其天堂顶还是有一定挑战性的。有机会约几个喜欢徒步的朋友再来走一走。
石门山森林公园
石门竹林
石门森林
石门花海

五. 雁山湖国际花园度假区 深圳开车410KM, 在梅州境内

【推荐理由】度假村依山伴水,环境十分优越。区内环境很好,有森林公园,是一个天然的大氧吧。度假村不仅环境好,设施
也建设的很完善。现在度假村, 内建成的有山庄别墅、酒店、滑草场、游泳池、童趣园、运动场、跑马场等,配套服务丰富。现已
建设有春晖园、夏晓园、秋实园三大景区,是休闲度假的最佳场所。
景区电话:0753-2839288
小贴士:自驾最近路线:深圳—梅观高速—机荷高速—惠盐高速—惠河高速—梅河高速—雁鸣湖。

雁山湖度假区1
雁山湖度假区2

六. 江门古劳水乡又称围墩水乡,已经有600多年历史,有“中国威尼斯”之称,是典型的湿地生态地貌

[门票】免费【地址】江门市鹤山市古劳镇双桥村委会仁和堡村
【交通】乘车:深圳坐汽车到鹤山,在鹤山坐汽车或者打车到古劳水乡。(建议自驾,导航到”古劳镇政府”,政府旁即为古劳水乡游客中心。深圳自驾过去差不多3h)
古劳镇1
古劳镇2
古劳镇3
古劳镇4
古劳镇5
古劳镇6
6.1分支 下川岛王府洲旅游度假区, 江门市台山市川岛镇,海边沙滩
下川岛1
下川岛2
下川岛3

七. 湖光岩 (深圳开车530KM)

湛江市麻章区湖光镇, 湖光岩真是绿色的海洋,从西门进入景区,初见玛珥湖,真被惊艳到了。湖面壮阔而平静,湖
水碧绿清澈,湖边绿树丛生。沿着湖一直走一圈大概需要3个小时

termux图形界面,采用termux-x11,waylnad驱动

以前在手机上显示temux桌面,采用vnc, 与xdsl大法。而xdsl大法非常方便。无论是外接键盘还是鼠标什么,就与电脑一样的操作,但是xserver-xdsl采用的图形驱动是xserver的,现在有大神写了termux-x11,采用的是wayland驱动。于是网上找到别人写的教程,我也试试。

一 安装一些东东, 假设termux安装完成。x11的那几个东东也安装完成了。去github上的termux-x11下载termux-x11.deb或有个apk文件到手机上,安装之。apk文件安装不用说了,如果要安装termux-x11.deb可能会出错。
1
2
3
4
5
6
7
8
$ pkg update & upgrade
$ pkg install x11-repo -y # 这一步可不用,因为在安装termux时己经装了。
$ pkg install termux-x11 xwayland -y
$ dpkg -i termux-x11.deb # 如果出错,是因为有些关联没有安装则
$ apt install -f
$ pkg update & upgrade
# 然后再次执行 dpkg -i termux-x11.deb
$ pkg install xfce4
二 在termux-x11下启动桌面
  1. 刚才安装的apt,会在安卓下生产Termux:X11的app图标,执行之。或

    1
    2
    3
    $ termux-x11  #会出现一个termux-X11的窗口   
    $ export DISPLAY=:0
    $ dbus-launch --exit-with-session startxfce4

    会在termux-x11的窗口出现xfce4的桌面。
    termux-x11下显示本地桌面

外接蓝牙键盘与鼠标可用,但是国为手机太小,又老花眼了,手指鼠标没有试

手机投屏电脑的软件之一,Scrcpy

2023年10月在debian12下重新用了一次,此时版本为2.1.1

  1. 到gihub上下载最新版安装如下:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    $ sudo apt install ffmpeg libsdl2-2.0-0 adb wget \
    gcc git pkg-config meson ninja-build libsdl2-dev \
    libavcodec-dev libavdevice-dev libavformat-dev libavutil-dev \
    libswresample-dev libusb-1.0-0 libusb-1.0-0-dev
    $ git clone https://github.com/Genymobile/scrcpy
    $ cd scrcpy
    $ ./install_release.sh
    # 安装成功,如果以后有新的版本,安装命令如下
    $ cd scrcpy
    $ git pull
    $ ./install_release.sh
  2. 打开手机“允许USB调试”,用用USB线与电脑链接,手机会弹出是否充许电脑对手机进行调试,要在手机上点击允许。
  3. 有线连接
    1
    2
    3
    4
    5
    $ adb devices
    List of devices attached
    XZ9CRS8ED unauthorized
    # 表示连上手机了
    $ scrcpy # 就可以用了
  4. 无线连接
    1
    2
    3
    4
    5
    6
    7
    # 退出上一步的有线,并执行
    $ adb shell ip a # 查看手机的IP地址,如果为192.168.8.666
    $ adb tcpio 5555
    # 提示“restarting in TCP mode port: 5555”
    # 可以拔掉USB线了
    $ adb connect 192.168.8.666:5555
    $ scrcpy
  5. 快捷键,利于控制,MOD键,默认为左边的Alt键,可通过如下命令更改
    1
    2
    3
    4
    5
    # 要更改使用右 Ctrl 键,则执行
    scrcpy --shortcut-mod=rctrl
    使用左 Ctrl 键 + 左 Alt 键,或 Super 键
    scrcpy --shortcut-mod=lctrl+lalt,lsupe
    # 可选的按键有 lCtrl、rCtrl、lAlt、rAlt、lSuper`和 rSuper
    MOD+f : 把scrcpy这个窗口在电脑上全屏
    MOD+左箭头 : 向左旋转scrcpy窗口,注意手机的屏幕并没有旋转
    MOD+右箭头 : 向右旋转scrcpy窗口,注意手机的屏幕并没有旋转
    MOD+h 或 鼠标中键 :反回手机主屏幕
    MOD+b 或 鼠标右键双击两次 : 返回
    MOD+s : 切换手机中的App
    MOD+m : 手机熄屏时,可以解锁屏幕
    双击鼠标右键两次 : 手机熄屏时,可以解锁屏幕
    MOD+o :关闭手机屏幕,但在电脑上还是显示。这里人为开手机屏幕也得了。得用下个快捷键打开。这一点非常好,手机省电了
    MOD+Shift+o : 打开手机屏幕。
    MOD+r : 旋转手机屏幕,按一次横屏,再按一次坚屏
    如果把MOD换成 Ctrl键,测Ctrl+c Ctrl+x Ctrl+v也可以用了
    Ctrl+Shift+V 把手机上的剪贴本放到电脑上

以下为2022年连接时的记录

两年前Scrcpy还不成熟时,试用过一下,不好用。就没有用了,现在的版本好了很多,也稳定了好多。趁电脑安装ubuntu20.04最新版时,又试用了一下。相当不错,链接两个小时,没有一次掉线。又怕忘记如何链接的,就做个笔记。
一 安装
1
2
$ sudo snap install scrcpy # 用apt install scrcpy也可以,但是采用snap安装,可以安装比较新的版本
$ sudo apt install android-tools-adb
二 手机与电脑先物理连接

打开手机“允许USB调试”,用用USB线与电脑链接

三 配置
1
$ lsusb  # 查看链接到USB接品的设备

USB device
可以看到,我的手机的ID号是:18d1:4ee2

1
2
3
4
5
6
7
8
$ mkdir ~/.android
$ eho 0x18d1 > ~/.android/adb_usb.ini
$ cd /etc/udev/rules.d
$ vim android.rules
# 写入
SUBSYTEM=="usb", SYSFS{idVendor}=="04e8", MODE="0666"
# 保存退出
$ sudo chmod 777 android.rules
四 启动服务
1
2
3
$ sudo service udev restart
$ adb start-server
$ adb devices

终端会显示
说明己经连接上了手机。则可以启动scrcpy了。

1
$ scrcpy

可以链接了。

五 无线链接

首先 手机与电脑要保持在一个局域网内,先用USB线连接手机

1
$ adb tcpip 5555 #设端口为5555

把线拔掉

1
2
3
4
$ adb connect 192.168.8.218:5555 # 192.168.8.218是手机的IP地址
$ scrcpy
$ scrcpy --turn-screen-off # 连接时,可关掉手机屏幕
$ scrcpy --bit-rate 2M --max-size 800 # 降低无线链接的速率(2M),与屏幕分辨率(800),以保持无线链接不卡线

手机投屏电脑的软件之一,Scrcpy

两年前Scrcpy还不成熟时,试用过一下,不好用。就没有用了,现在的版本好了很多,也稳定了好多。趁电脑安装ubuntu20.04最新版时,又试用了一下。相当不错,链接两个小时,没有一次掉线。又怕忘记如何链接的,就做个笔记。
一 安装
1
2
$ sudo snap install scrcpy # 用apt install scrcpy也可以,但是采用snap安装,可以安装比较新的版本
$ sudo apt install android-tools-adb
二 手机与电脑先物理连接

打开手机“允许USB调试”,用用USB线与电脑链接

三 配置
1
$ lsusb  # 查看链接到USB接品的设备

USB device
可以看到,我的手机的ID号是:18d1:4ee2

1
2
3
4
5
6
7
8
$ mkdir ~/.android
$ eho 0x18d1 > ~/.android/adb_usb.ini
$ cd /etc/udev/rules.d
$ vim android.rules
# 写入
SUBSYTEM=="usb", SYSFS{idVendor}=="04e8", MODE="0666"
# 保存退出
$ sudo chmod 777 android.rules
四 启动服务
1
2
3
$ sudo service udev restart
$ adb start-server
$ adb devices

终端会显示
说明己经连接上了手机。则可以启动scrcpy了。

1
$ scrcpy

可以链接了。

五 无线链接

首先 手机与电脑要保持在一个局域网内,先用USB线连接手机

1
$ adb tcpip 5555 #设端口为5555

把线拔掉

1
2
3
4
$ adb connect 192.168.8.218:5555 # 192.168.8.218是手机的IP地址
$ scrcpy
$ scrcpy --turn-screen-off # 连接时,可关掉手机屏幕
$ scrcpy --bit-rate 2M --max-size 800 # 降低无线链接的速率(2M),与屏幕分辨率(800),以保持无线链接不卡线

修改Anlinux的shell,以安装ubuntu的新版本

多年前采用anlinux的app,来在termux上安装linux,后面有大神写出了proot-distro的东东来安装linux非常方便,还能通过修改/etc/proot-distro/目录下的文件,选择各种版本的linux,于是果断放弃了anlinux转用proot-distoo。然而proot-distro的作者却自己封装了linux的rootfs文件,没有辣么方便了,又从proot-distro更新到2.9.3后,竟然连我以前装的linux版本都启动不了了。于是想起了以前的anlinux的app,拿它与proot-distro的shell比较过,觉得它更简单,于是修改之,自己安装Canonical官方发布的arm版 ubuntu21.04,例子如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
#!/data/data/com.termux/files/usr/bin/bash
folder=ubuntu-hirsute
if [ -d "$folder" ]; then
first=1
echo "skipping downloading"
fi
# 下载Canonical官方发布的 ubutnu21.04 的 rootfs
wget "https://partner-images.canonical.com/core/hirsute/current/ubuntu-hirsute-core-cloudimg-arm64-root.tar.gz"
tarball="ubuntu-hirsute-core-cloudimg-arm64-root.tar.gz"
cur=`pwd`
mkdir -p "$folder"
cd "$folder"
echo "Decompressing Rootfs, please be patient."
proot --link2symlink tar -zxvf ${cur}/${tarball}||:
cd "$cur"

mkdir -p ubuntu-binds
bin=start-hirsute.sh
echo "writing launch script"
cat > $bin <<- EOM
#!/bin/bash
cd \$(dirname \$0)
## unset LD_PRELOAD in case termux-exec is installed
unset LD_PRELOAD
command="proot"
command+=" --link2symlink"
command+=" -0"
command+=" -r $folder"
if [ -n "\$(ls -A ubuntu-binds)" ]; then
for f in ubuntu-binds/* ;do
. \$f
done
fi
command+=" -b /dev"
command+=" -b /proc"
command+=" -b ubuntu-hirsute/root:/dev/shm"
## uncomment the following line to have access to the home directory of termux
#command+=" -b /data/data/com.termux/files/home:/root"
## uncomment the following line to mount /sdcard directly to /
command+=" -b /sdcard"
command+=" -b /storage"
command+=" -w /root"
command+=" /usr/bin/env -i"
command+=" HOME=/root"
command+=" PATH=/usr/local/sbin:/usr/local/bin:/bin:/usr/bin:/sbin:/usr/sbin:/usr/games:/usr/local/games"
command+=" TERM=\$TERM"
command+=" LANG=C.UTF-8"
command+=" /bin/bash --login"
com="\$@"
if [ -z "\$1" ];then
exec \$command
else
\$command -c "\$com"
fi
EOM

echo "fixing shebang of $bin"
termux-fix-shebang $bin
echo "making $bin executable"
chmod +x $bin
echo "removing image for some space"
rm $tarball
echo "You can now launch Ubuntu with the ./${bin} script"
安装完成后,执行 ./start-hirsute.sh 进入ubuntu21.04,发现不能apt update,后来发现是没有dns解析,于是
1
2
3
4
5
6
cd /etc
vim resolv.conf
添加
nameserver 114.114.114.114
nameserver 8.8.8.8
保存后退出
进入linux后,出现以下错误
1
2
3
4
goups: cannot find name for group ID 3003
groups: cannot find name for group ID 9997
goups: cannot find name for group ID 20xxx
groups: cannot find name for group ID 50xxx

这是由于termux安装ubuntu后没有给原本Android的系统用户组赋予名称导致的。由于每次在不同设备上安装termux.apk分配的u0_id (whoamis查到是u0_axxx)中的id值是不同的,这个需要每次改一下
解决方法:
1.用startubuntu进入系统su
2.执行以下命令

1
2
3
4
$ addgroup --system --gid 3003 inet
$ addgroup --system --gid 9997 sdcard_rw
$ addgroup --system --gid 50xxx all_axxx
$ reset

streamlit学习笔记五-----暂称全局变量吧

在编写一个streamlit代码时,发现有一个变量会在几个函数中使用,可是可这个变量如果定义在外的话,每个函数调用改变它后,虽的函数再调用,这个变量并不是上次改过的值,值还是初始化时赋的值。比如 代码一
1
2
3
4
5
6
7
8
9
10
11
12
import streamlit as st

st.title('代码一例子')
count = 0

increment = st.button('增加')
if increment:
count += 1

st.write('Count = ', count)

# 这个代码执行后,不管你咋按那个按钮,count都是1。
肿么才能避免呢? 采用 st.session_state,streamlit把它叫做 ”会话状态“
1
2
3
4
5
6
7
8
9
10
import streamlit as st

# 检查 'key' 是否存在于 session_state 中
# 如果不存在,则初始化之
if 'key' not in st.session_state:
st.session_state['key'] = 'value'

# 另一种语法
if 'key' not in st.session_state:
st.session_state.key = 'value'

一. 采用 “会话状态”,那么代码一可以改为代码二

1
2
3
4
5
6
7
8
9
10
11
12
import streamlit as st

st.title('代码一改为代码二')
# 检查 'count' 是否在 session_state中
if 'count' not in st.session_state:
st.session_state.count = 0

increment = st.button('增加')
if increment:
st.session_state.count += 1

st.write('Count = ', st.session_state.count)

二. 使用 “会话状态” 与 “回调函数” 来修改代码一

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
import streamlit as st

st.title('采用回调来更改代码一')
# 检查 'count' 是否在 session_state中
if 'count' not in st.session_state:
st.session_state.count = 0

# 定义函数,一会儿就要回调它
def increment_counter():
st.session_state.count += 1

# 在 st.button里回调函数 increment_counter()
st.button('Increment', on_click=increment_counter)

st.write('Count = ', st.session_state.count)

三. 以上的回调函数是木有参数的,那么如果有参数呢?

1. 使用 args 小部件来传递参数
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
import streamlit as st

st.title('回调函数有参数')
if 'count' not in st.session_state:
st.session_state.count = 0

increment_value = st.number_input('输入一个数值', value=0, step=1)

# 函数有参数
def increment_counter(increment_value):
st.session_state.count += increment_value
# 采用 args 把参数导入
increment = st.button('Increment', on_click=increment_counter,
args=(increment_value, ))

st.write('Count = ', st.session_state.count)
2. 使用 kwargs 传递命名参数
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
import streamlit as st

st.title('回调参数用 kwargs 传递参数')
if 'count' not in st.session_state:
st.session_state.count = 0

def increment_counter(increment_value=0):
st.session_state.count += increment_value

def decrement_counter(decrement_value=0):
st.session_state.count -= decrement_value

st.button('Increment', on_click=increment_counter,
kwargs=dict(increment_value=5))

st.button('Decrement', on_click=decrement_counter,
kwargs=dict(decrement_value=1))

st.write('Count = ', st.session_state.count)

四. 会话状态(全局变量)与 小部件中的值关联,采用 “key” 参数

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
import streamlit as st

if "celsius" not in st.session_state:
# set the initial default value of the slider widget
st.session_state.celsius = 50.0

st.slider(
"Temperature in Celsius",
min_value=-100.0,
max_value=100.0,
key="celsius" # 采用 key 把slider小部件中的值与全局变量celsius关联
)

# This will get the value of the slider widget
st.write(st.session_state.celsius)