微创新:5种微小改变创造伟大产品

总结

  1. 真正的创新往往是“框架内的”
  2. 所有创新的阻碍,都是思想“固着”在挡碍。
  3. 想要真正的创新,必须“不妥协”。
  4. 创新技能不是天赋,是一种技能,任何人都能通过学习掌握它。
  5. 只有创意还远远不够。创新行为意味着生成一个新想法之后将其付诸实践。
  6. 头脑风暴并不像想象的那么有用
  7. 很多创新是多个创新方法交织的产物

少即是多:减法策略

去除某项功能,创造新的产品

分而治之:除法策略

将某项功能,改变空间形态实现,比如控制面板移除到遥控上,优化产品形态体积。
功能性除法:将某个功能改变其位置
物理型除法:将产品随机分解成若干部分
保留型出发:吧产品缩小

  1. 桶形高楼
  2. 剃须刀
  3. 双面胶

生生不息:乘法策略

  1. 画中画功能
  2. 自行车辅助轮

一专多能:任务统筹策略

  1. 向日葵计划
  2. 游戏中的图片识别任务
  3. 生命探测计划的分布式计算机资源

巧妙相关:属性依存策略

  1. 温度和颜色的关联
  2. 价格和时间的关系
  3. 披萨价格和送达时间温度的关系

属性依存策略是在两个先前没有关联的变量之间制造依存关系。

矛盾:创新路上的灯塔

  1. 每一个矛盾都将为你开辟一条未曾有人涉足的大路,这条路会将你带向一个充满无限可能性的资源宝库。
  2. 大部分矛盾都是假矛盾,它们存在于我们的思维中,却不是真正的矛盾。
  3. 许多矛盾事实上都源于观点的不同。通过假定某个矛盾是真矛盾--不管这是某个人的明确看法还是某些人的模糊看法,你都是在禁锢自己的创造力。
  4. 当你无法完全掌握信息,或是做出了不确定的错误假设时,假矛盾就会出现
  5. 大部分连接两个对立观点的限定词都是在不确定假设中形成的。它们有时时对的,有时是错的,这完全取决于假设是否准确。由于很多不确定假设都未经任何检验,因此它们中的大多数都是错误假设。这也解释了为什么这些限定词都是矛盾中的弱连结。去掉弱连结,矛盾就不攻自破。

pixel3 刷机root

  • fasttool 版本不能太高:fastboot version 31.0.3-7562133

  • 出厂固件:https://developers.google.com/android/images?hl=zh-cn
    pixel3可以用这个:
    https://dl.google.com/dl/android/aosp/blueline-sp1a.210812.016.c1-factory-b41403db.zip?hl=zh-cn

  • Magisk-v26.4.apk

注意:
fastboot 时,如果设备驱动不正确,有问号的话,会没有反应:
< waiting for any device >

pixel3需要的驱动:usb_driver_r13-windows.zip

参考:https://blog.csdn.net/StepTp/article/details/120678944

nginx支持ecc密钥的ciphers

在使用ecc密钥后,网页可能突然提示ciphers 或者protocol相关的错误,那么轻检查 nginx.conf 中的ssl_ciphers字段。
以下的配置支持ecc密钥:

ssl_ciphers                EECDH+CHACHA20:EECDH+CHACHA20-draft:EECDH+ECDSA+AES128:EECDH+aRSA+AES128:RSA+AES128:EECDH+ECDSA+AES256:EECDH+aRSA+AES256:RSA+AES256:EECDH+ECDSA+3DES:EECDH+aRSA+3DES:RSA+3DES:!MD5;
ssl_prefer_server_ciphers on;

当包含 ssl_ecdh_curve 参数时,一定要重点检测此参数,保证此参数内容跟ecc兼容,或者删掉此参数

曾文正公嘉言钞-书札

p014 复龙翰臣:
二三十年来,士大夫习于优容苟安,揄修袂而养姁步,倡为一种不白不黑不痛不痒之风,建友慷慨感激以鸣不平者,则相与议其后,以为是不更事轻浅而好自见。国藩昔厕六曹,目击此等风味,盖已痛很次骨。

p015 复黄子春:
国藩从宦有年,饱阅京洛风尘,达官贵人优容养望与在下者软熟和同之象,盖己稔知之而惯尝之,积不能平,乃变而为慷慨激烈、轩爽肮脏之一遂,思欲稍易三四十年来不白不黑、不痛不瘁、牢不可破之习,而矫枉过正,或不免流于意气之偏,以是屡蹈愆尤,丛讥取戾,而仁人君予,固不当责以中庸之道,且当怜其有所激而矫之之苦衷也。 
--翻译:
我做官有些年头,早就看惯了京师的官场习气,那些达官贵人生活优裕安逸,看重声望;下层的官员则圆滑世故,趋炎附势。这些问题见得多了,我的郁闷也越积越多,心绪久久不能平静,于是变成一种慷慨激烈、嫉恶如仇的性格。我一直希望能够稍稍改变三四十年来这种不白不黑、不痛不痒又牢不可破的积习,但有时候会采取矫枉过正的做法,不免有些意气用事的偏颇,因此屡遭埋怨和指责,招致讥讽和打击,但真正的仁人君子是不会以中庸之道来指责我的,他们应当体谅我这些矫枉过正的做法是有苦衷的。

p016 复石樵:
苍苍者究竟未知何若,吾辈竭力为之,成败不复计耳。

<复褚一帆>
愚民无知,于素所未见未闻之事,辄疑其难于上天。一人告退,百人附和,其实并无真知灼见;假令一人称好,即千人同声称好矣。

p017
<与刘霞仙>
虹贯荆卿之心,而见着以为淫氛而薄之;碧化苌宏之血,而览者以为顽石而弃之。古今同慨,我岂伊殊?屈累之所以一沉,而万世不复返顾者,良有以也。

p018
<与罗罗山、刘霞山>
时事愈艰,则挽回之道,自须先之以戒惧惕厉。傲兀郁积之气,足以肩仁艰巨,然视事太易,亦是一弊。

<致罗罗山>
凡善弈者,每于棋危劫急之时,一面自救,一面破敌,往往因病成妍,转败为功。善用兵者亦然。

p019
<与李次青>
急于求效,杂以浮情客气,则或泰山当前而不克己。以瓦注者巧,以钩注者惮,以黄金注者昏。外重而内轻,其为蔽也久矣。

《于李次青》
锐气暗损,最为兵家所忌。用兵无他谬巧,常存有余不尽之气而已。

p020
《与罗伯宜》
日中者昃,月盈则亏,故古诗“花未全开月未明”之句,君子以为知道。自仆行军以来,每介疑胜疑败之际,战兢恐惧,上下怵惕者,其后恒得大胜;或当志得意满之侯,狃于屡胜,将卒矜慢,其后常有意外之失。(启超按:处一切境遇皆如此,岂惟用兵?)

p021
《与刘霞仙》
欲学为文,当扫荡一副旧习,赤地新立。将前次所业荡然若丧其所有,乃始别有一番文境。(启超按:此又不惟学文为然也)

《复李希庵》
吾乡数人均有薄名,尚在中年,正可圣可狂之际;惟当兢兢业业,互相箴规,不特不宜自是,并不宜过于奖许,长朋友自是之心。彼此恒以过相砭,以善相养,千里同心,庶不终为小人之归。

config tigervnc in arch linux

pacman -Syu tigervnc

如果安装不成功,则需要手动下载安装包,通过 pacman -U xxx 来安装。

安装成功后,通过如下命令运行:
vncserver :1

默认会提示失败,需要继续设置:

  1. 用 vncpasswd 创建密码,它会将哈希处理之后的密码存储在 ~/.vnc/passwd。
  2. 编辑 /etc/tigervnc/vncserver.users 来定义用户映射。该文件中定义的每个用户都会拥有对应的端口来运行会话。该文件中的数字对应的是 TCP 端口。默认情况下,:1 是 TCP 端口 5901 (5900+1)。如果需要运行一个并行的服务端,第二个实例可以运行在下一个最大的、未被占用的端口,即 5902 (5900+2)。/etc/tigervnc/vncserver.users文件示例配置如下:
    :1=YourUserName

一些极品app后缀域名

朋友的一些极品域名,以下域名出售,请联系(The following domain names are selling, please contact): 94724211@qq.com

  1. hao321.app 导航 或者行业汇聚

  2. i00.app 短域名

  3. i11.app 短域名

  4. i66.app 短域名 理财 保险类

  5. i88.app 短域名 理财 保险类

  6. petpet.app 派派 智能硬件相关 宠物

  7. iiapi.com api汇总站 短域名

  8. goodmemory.cc 美好回忆,好记性,good memory

  9. zhizu100.com 直租百分百

  10. ihuardhub.com 开源,硬件汇集平台

  11. superxgaget.com 超级小玩意,新奇好物

  12. superxclaw.com 超级龙虾 龙虾

android下的dropbear编译

安卓默认的sshd应为路径权限的问题,无法正常工作,所以我们选用dropbear。

  1. 项目地址:https://github.com/ubiquiti/dropbear-android.git
  2. 配置ndk和交叉编译工具链:
diff --git a/build-dropbear-android.sh b/build-dropbear-android.sh
index 15042af..5be67ce 100755
--- a/build-dropbear-android.sh
+++ b/build-dropbear-android.sh
@@ -28,8 +28,9 @@ cd dropbear-$VERSION
 echo "Generating required files..."

 HOST=arm-linux-androideabi
-COMPILER=${TOOLCHAIN}/bin/arm-linux-androideabi-gcc
-STRIP=${TOOLCHAIN}/bin/arm-linux-androideabi-strip
+TOOLCHAIN=/xxx/android-ndk-r25b/toolchains/llvm/prebuilt/linux-x86_64
+COMPILER=${TOOLCHAIN}/bin/armv7a-linux-androideabi26-clang
+STRIP=${TOOLCHAIN}/bin/llvm-strip
 SYSROOT=${TOOLCHAIN}/sysroot

 export CC="$COMPILER --sysroot=$SYSROOT"

参考:
https://fh0.github.io/%E7%BC%96%E8%AF%91/2021/02/18/android-dropbear.html

systemctl开机运行脚本

通过systemctl开机运行特定脚本。

老生常谈,但是为了下次一步到位,节省几秒时间,还是整理下。

  1. /usr/lib/systemd/system 下添加xxx.service
[Unit]
After=network.service

[Service]
Type=forking
ExecStart=xxx             #为服务的具体运行命令
ExecReload=xxx          #为服务的重启命令
ExecStop=xxx             #为服务的停止命令

[Install]
WantedBy=multi-user.target
  1. 给服务文件设置必要的权限,比如754。注意你的目标sh也是有对应执行权限的。
  2. 使能脚本
systemctl daemon-reload
systemctl enable xxx.service
systemctl start xxx.service
  1. 检查是否运行
systemctl is-enabled xxx.service
  1. 其他systemctl 命令
    restart
    disable
    status
    list-units --type=service

unraid的encryption key file

当我们在unraid中启用加密文件系统后,每次开机就要输入密码或者使用key file。

那么unraid的 key file 又是什么东西和内容格式呢?
unraid的key file 就是加密密码的纯字符内容,注意文件不要待空换行。
可以用以下命令生成 :

echo -n "password" >keyfile

参考:
https://forums.unraid.net/topic/85495-unraid-newenckey-change-your-drive-encryption-unlock-key/

mac下如何做串口测试

window下的串口工具很多,大名鼎鼎的sscom之类。但是mac下就不是那么丰富了。

工具

https://github.com/Neutree/COMTool/releases/download/v3.2.1/comtool_macos_v3.2.1.dmg

mac 会提示安全风险,这个我们自己评估,承担风险,确认开启:
file

file

设置串口

适配器连线

这个根据自己实际需要配置。如果只看日志,只收不发,两根线就可以,双向收发就要3线了。
file
如图所示,蓝色是GND,另一根连接到适配器的rxd上。

选择适配器端口

根据我们使用的适配器,选择设备时会有所不同,要根据实际调整。我们使用的是cp2102是配器:
file

file

配置串口

根据需要配置波特率和参数就可以,比如我们当前的测试就是921600:
file

至此,就可以显示日志了,如果你要发送数据,选择正确的连线就可以。

ubuntu挂载smb

创建挂载目录

mkdir /media/nas

创建认证文件。若无密码可以忽略这一步。
sudo vim /root/.examplecredentials
按照以下格式写入用户名密码:

username=example_username
password=example_password
为确保安全,同时写入权限限制:

sudo chmod 400 /root/.examplecredentials
安装 cifs

sudo apt install cifs-utils
测试临时挂载。假设挂载服务器是192.168.18.112, 挂载文件夹是 sharedDir。

sudo mount -t cifs -o rw,vers=3.0,credentials=/root/.examplecredentials //192.168.18.112/sharedDir /media/nas
进入挂载目录查看是否正常:

cd /media/nas
设定开机自动挂载
编辑挂载文件:

sudo vim /etc/fstab
在最后面写入如下一行:

//192.168.18.112/share /media/share cifs nofail,vers=3.0,credentials=/root/.examplecredentials
重启查看是否生效。

ref:https://www.cnblogs.com/wx2020/p/17208158.html

与朱石翘书札

今方民穷财困,吾辈是不能别有噢咻生息之术,
计惟力去害民之人,以听吾民之自孳自活而已。

---现在的情况是,百姓无以为生,国家用度匮乏,我们也不可能有其他的办法让百姓们休养生息,所能做的也只是尽全力清除那些侵害百姓的人,让百姓们能够不受干扰地自己存活下去

复欧阳晓岑书札

集思广益非易事,
要当内持定见而六辔在手,
外广延纳而万流赴壑,
乃为尽善。

--集思广益本来就不是一件容易的事,关键是内心要持有不可动摇的主见,就像手握住套住群马的缰绳驾驭车马,广泛听取不同的意见,如同万条流水奔向沟壑,才能做到尽善尽美。

通过frp访问内网vnc服务

背景

需要远程访问内网linux桌面,而且anydesk等不好用,所以想到通用的vnc方案。但是设置端口映射后,发现依然端口无法访问,怀疑是被协议级检测了,所以想到frp穿透下。

方案

file

步骤

  1. 配置要ddns域名和端口映射,否则无法访问到内网主机
  2. 安装frps 和frpc,根据具体需要,可以是一台物理机,也可以是分开的主机。

配置

frps.ini

[common]
bind_port = 7000

frpc.ini

[common]
server_addr = 127.0.0.1
server_port = 7000

[ssh]
type = tcp
remote_port = 6000
local_port = 5900
local_ip = 127.0.0.1

注意:此配置表示frpc和vnc server在一个机器,如果不在一个机器,要实际修改local_ip

frp 开机启动

frpc

vim /lib/systemd/system/frpc.service

[Unit]
#服务描述
Description=frp service
After=network.target syslog.target
Wants=network.target
Requires=frps.service
After=frps.service

[Service]
Type=simple

TimeoutStartSec=infinity
ExecStartPre=/bin/sleep 30

#执行命令
ExecStart=/usr/local/frp/frpc -c /usr/local/frp/frpc.ini

[Install]
WantedBy=multi-user.target
systemctl daemon-reload
#启动
sudo systemctl start frpc
#关闭
sudo systemctl stop frpc
#重启
sudo systemctl restart frpc
#查看状态
sudo systemctl status frpc

frps

与frpc类似

[Unit]
#服务描述
Description=frp service
After=network.target syslog.target
Wants=network.target
Before=frpc.service

[Service]
Type=simple
#执行命令
ExecStart=/usr/local/frp/frps -c /usr/local/frp/frps.ini

[Install]
WantedBy=multi-user.target

mount开机自动挂载smb路径

root用户编辑/etc/fstab文件,在末尾加入一行:

 //ip地址或计算机名/共享文件夹名 挂载点  smbfs   username=用户名,password=密码 0 0

说明:ubuntu12.10之后,smbfs被cifs代替了,需要:

  1. sudo apt-get install cifs-utils
  2. 将上面中的smbfs 换位cifs

从0开玩lichee zero-5-mmc烧录

一般比较小的系统我们用spi flash。 比较大的系统比如debian,我们需要mmc sd卡。

分区

file

准备

将所需的所有目标文件,都拷贝到当前目录下。

uboot

dd if=u-boot-sunxi-with-spl.bin of=/dev/sdb bs=1024 seek=8

第一分区

cp boot.scr /mnt/sd/part1
cp sun8i-v3s-licheepi-zero-dock.dtb /mnt/sd/part1/
cp zImage /mnt/sd/part1

第二分区

tar vxf rootfs.tar -C /mnt/sd/part2

virtualbox 共享目录不生效

原因是guest addistions 没生效。

解决:
将virtualbox安装目录下的VBoxGuestAdditions.ios 加载到第一主光驱,然后重启:

file

然后运行:
cd /media/xxx/VBox_GAs_7.0.8
sudo shell VboxLinuxAdditions.run

执行完成后,再重新配置共享目录,发现确定是有更新的效果了,再去看挂载目录,就会发发现成功了

从0开玩lichee zero-3-rootfs编译

build

apt-get install linux-headers-$(uname -r)
wget https://buildroot.org/downloads/buildroot-2017.08.tar.gz
tar xvf buildroot-2017.08.tar.gz
cd buildroot-2017.08/
make menuconfig
make

troubleshoot

  • host-m4 版本问题:c-stack.c:55:26: error: missing binary operator before token "("
    解决: 由m4-1.4.18升级为m4-1.4.19。修改package/m4下的m4.mk和m4.hash
    m4.mk:

    M4_VERSION = 1.4.19

    m4.hash:

    sha256  63aede5c6d33b6d9b13511cd0be2cac046f2e70fd0a07aa9573a04a82783af96  m4-1.4.19.tar.xz
  • bison: Please port gnulib fseterr.c to your platform
    解决:cd output/build/host-bison-3.0.4

    sed -i 's/IO_ftrylockfile/IO_EOF_SEEN/' lib/*.c
    echo "#define _IO_IN_BACKUP 0x100" >> lib/stdio-impl.h
  • libfakeroot.c:99:40: error: '_STAT_VER' undeclared
    #ifndef _STAT_VER
    #if defined (__aarch64__)
    #define _STAT_VER 0
    #elif defined (__x86_64__)
    #define _STAT_VER 1
    #else
    #define _STAT_VER 3
    #endif
    #endif