- http://www.ruanyifeng.com/blog/2011/12/inode.html(基础知识)
- https://learnku.com/articles/46728(基础知识
- https://learnku.com/articles/10048/remember-a-fault-due-to-full-disk-inode(故障处理)
- https://www.cnblogs.com/quail2333/p/10674583.html(lost+found目录)
作者: yangliuan
Web通讯技术应用
传输超文本内容(超媒体文档html,css,js,图片,音视频)的协议 ,发展过程
文件传输协议,现代浏览器已经不支持了
在单个TCP连接上进行全双工通信,允许服务端主动向客户端推送数据
SSE(Server-sent Event) mdn wiki
服务器可以随时向我们的 Web 页面推送数据和信息。这些被推送进来的信息可以在这个页面上以 事件 + 数据 的形式来处理。
WebRTC mdn wiki baike googledevloper
项实时通讯技术,它允许网络应用或者站点,在不借助中间媒介的情况下,建立浏览器之间点对点(Peer-to-Peer)的连接,实现视频流和(或)音频流或者其他任意数据的传输
RTMP mdn RTMP Stream: What It Is & How to Set It Up – Essential Guide
Adobe开发的 实时消息协议 (RTMP)
RTSP mdn
HLS mdn
HLS(HTTP Live Streaming) 是由苹果公司研发的协议,支持在 IOS、Safari 及安卓上最新版本的浏览器/Chrome 浏览器。HLS 也是自适应的。
SMB wiki
SMB(Server Message Block)服务器消息块 (SMB) 是一种通信协议[1],用于在网络上的节点之间共享文件、打印机、串行端口和其他通信。在 Microsoft Windows 上,SMB 实现由两个名称模糊的 Windows 服务组成:“Server”(ID:LanmanServer)和“Workstation”(ID:LanmanWorkstation)。[2] 它使用 NTLM 或 Kerberos 协议进行用户身份验证。它还提供经过身份验证的进程间通信 (IPC) 机制。
`
Web服务器
服务器类型
nginx
openrestry
tengine
nginx_php
apache
caddy
Lighttpd
althttpd
IIS
Let’s Encrypt certbot
Windows系统激活与注册
Windows11
在 Windows 11 安装过程中,只需要使用用户名 no@thankyou.com 就能跳过联网账户,创建本地账户了。
VirtualBox磁盘扩容
磁盘类型 VDI(VirtualBox 磁盘映像)
磁盘管理工具 Hard Disk
启动光盘镜像系统(PE系统)
动态分配 dynamically allocated
1.使用如何磁盘管理工具,修改磁盘大小,如上图所示
2.启动ubuntu光盘系统,或者gparted-live-1.5.0-1-amd64.iso 也可以,使用GParted ,扩容磁盘
固定分配 fixsize
pre allocate full size(预先分配所有大小)
1.使用磁盘管理,创建一个更大空间的虚拟硬盘
2.启动光盘镜像系统,打开终端,使用dd命令刻录数据到新的硬盘
dd if=/dev/sda of=/dev/sdb
3.更换存储设置中的控制器SATA中的硬盘
动态分配差分存储 Dynamically allocated differencing storage
需要将上述两种方式结合起来
1.创建一个更大空间动态分配的硬盘
2.将原先的系统盘dd刻录到新的硬盘
3.使用动态分配中的扩容方法,使用GParted扩容剩余空间
参考文章
ubuntu desktop 22.04 安装多版本Python
二进制安装
添加存储库
sudo add-apt-repository ppa:deadsnakes/ppa
sudo apt-get update
安装python
sudo apt-get install python3.11
安装多个版本python
sudo apt-get install python3.11 python3.9 python3.8
将旧版本的 Python 和新版本添加到更新替代方案
sudo update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.10 1
sudo update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.11 2
键入以下命令以配置 python3, 输入需要选择python
sudo update-alternatives --config python3
有 2 个候选项可用于替换 python3 (提供 /usr/bin/python3)。
选择 路径 优先级 状态
------------------------------------------------------------
0 /usr/bin/python3.11 2 自动模式
1 /usr/bin/python3.10 1 手动模式
* 2 /usr/bin/python3.11 2 手动模式
要维持当前值[*]请按<回车键>,或者键入选择的编号:^^^^^^
查看版本 python3 -V
编译安装
默认安装到/usr/local/bin
sudo apt install gcc dialog libaugeas0 augeas-lenses libssl-dev libffi-dev ca-certificates
tar xzf Python-3.11.3.tgz
pushd Python-3.11.3 > /dev/null
./configure --enable-optimizations
make -j 8 && make altinstall
配置默认python3
sudo update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.10 1
sudo update-alternatives --install /usr/bin/python3 python3 /usr/local/bin/python3.11 2
sudo update-alternatives --config python3
集成环境
conda 占用空间太大,每个环境都要重复安装基础组件,适合AI项目
存在的问题
apt update 报错
Traceback (most recent call last):
File "/usr/lib/cnf-update-db", line 3, in <module>
import apt_pkg
ModuleNotFoundError: No module named 'apt_pkg'
E: Problem executing scripts APT::Update::Post-Invoke-Success 'if /usr/bin/test -w /var/lib/command-not-found/ -a -e /usr/lib/cnf-update-db; then /usr/lib/cnf-update-db > /dev/null; fi'
$ cd /usr/lib/python3/dist-packages
$ ls -la | grep "apt_pkg.cpython"
$ sudo cp apt_pkg.cpython-310-x86_64-linux-gnu.so apt_pkg.so
编译安装的python使用此方法无法解决
gnome-terminal等基于的python软件无法使用
cd /usr/lib/python3/dist-packages/gi/
sudo cp _gi_cairo.cpython-310-x86_64-linux-gnu.so _gi_cairo.cpython-311-x86_64-linux-gnu.so
sudo cp _gi.cpython-310-x86_64-linux-gnu.so _gi.cpython-311-x86_64-linux-gnu.so
编译安装的python使用此方法无法解决
最好不要更改系统默认python
https://stackoverflow.com/questions/56218562/how-to-fix-modulenotfounderror-no-module-named-apt-pkg
https://blog.csdn.net/yulinxx/article/details/125472350
Refer To
https://ubuntuhandbook.org/index.php/2021/10/compile-install-python-3-10-ubuntu/
https://ubuntuhandbook.org/index.php/2022/10/python-3-11-released-how-install-ubuntu/
Mac OS开发者常用笔记
macOS Recovery mode
如何进入回复模式?
Intel 芯片架构 重启,在Mac启动或听到启动铃声后立即按住Command + R键
MI/M2芯片架构 关机,按住触控 ID(电源按钮)几秒钟,直到看到“加载启动选项”
Disable System Integrity Protection Temporarily
禁用系统完整性保护,用来解决开发时候操作系统文件提示operation not permitted问题
1.按上文操作进入macOS Recovery mode
2.进入系统后,下拉顶部栏工具,打开终端,输入csrutil disable (禁用),按照提示输入用户名和密码,重启系统。
3.为了安全,敏感操作之后,建议csrutil enable (启用) 保护模式。否则可能导致app store上的某些ios应用(非dmg)无法使用
ubuntu音乐播放器
QQ音乐
下载页面:https://y.qq.com/download/download.html
shell安装脚本 https://github.com/yangliuan/ubuntu-start/blob/main/include/linuxqq.sh
网易云音乐
下载页面 https://music.163.com/#/download (页面上没有了ubuntu的下载项)
下载地址 https://d1.music.126.net/dmusic/netease-cloud-music_1.2.1_amd64_ubuntu_20190428.deb
shell安装脚本https://github.com/yangliuan/ubuntu-start/blob/main/include/neteasy_cloud_music.sh
Lollypop
有漂亮的界面和直观的用户体验。支持音频标签编辑、歌词显示和艺术家图片显示等功能
安装(可以从商店安装)
sudo apt-get install lollypop
Rhythmbox
ubuntu默认音乐播放器
https://wiki.gnome.org/Apps/Rhythmbox
安装 (可以从商店安装)
sudo apt install rhythmbox
如何修改mp3文件的元数据,如专辑名称,歌手名称
使用命令行工具 “id3v2″(需要安装):
a. 打开终端。
b. 安装 id3v2 工具:sudo apt-get install id3v2
c. 进入包含要编辑的 MP3 文件的目录:cd /path/to/mp3/files
d. 使用以下命令来修改元数据:
修改专辑名称:id3v2 –album “新专辑名称” 文件名.mp3
修改歌手名称:id3v2 –artist “新歌手名称” 文件名.mp3
e. 替换 “新专辑名称” 和 “新歌手名称” 为你想要的实际名称,将 “文件名.mp3” 替换为要编辑的 MP3 文件的实际文件名。
使用图形界面工具 “EasyTAG”(需要安装):
a. 打开终端。
b. 安装 EasyTAG 工具:sudo apt-get install easytag
c. 运行 EasyTAG:easytag
d. 在 EasyTAG 窗口中,打开要编辑的 MP3 文件。
e. 找到并编辑专辑名称和歌手名称字段。
f. 保存修改后的文件。
Kid3: Kid3 是一个跨平台的开源音乐标签编辑器,支持多种音频文件格式(包括 MP3、FLAC、AAC、WMA 等)。官方网站(https://kid3.kde.org/)
跨平台客户端技术
浏览器Web前端
QT
Qt 1991年,当时是由挪威的程序员Eirik Chambe-Eng和Haavard Nord创建的。他们最初为了解决开发GUI应用程序的问题而创建了Qt,当时Qt是一个用于开发Unix操作系统上的GUI应用程序的工具库。开发语言是C++,也提供了Python、JavaScript和QML等其他编程语言的支持。
官网文档: https://doc.qt.io/qt-5/gettingstarted.html
支持的平台:https://doc.qt.io/qt-5/supported-platforms.html
知名的软件:VirtualBox,Autodesk Maya,VLC Media Player,Skype,Autodesk Mudbox,Google Earth
Flutter
Flutter 是一个由 Google 开发的移动应用程序开发框架。它使用 Dart 编程语言,并支持 iOS、Android 和 Web ,PC 等多个平台。
官网 https://flutter.dev/development
中文社区 https://flutterchina.club
Electron.js
Electron 是一个使用 Web 技术(HTML、CSS 和 JavaScript)构建桌面应用程序的框架。它可以在 Windows、macOS 和 Linux 等多个操作系统上运行
官网 https://www.electronjs.org/
文档 https://www.electronjs.org/docs/latest/
社区:https://www.electronjs.org/community
Nw.js
基于Chromium和Node.js的开源跨平台桌面应用程序开发框架,可以使用HTML、CSS和JavaScript创建原生的桌面应用程序,支持Windows、macOS和Linux等操作系统。以下是nw.js的官网、文档和社区网站:
文档:https://nwjs.readthedocs.io/en/latest/ nw.js的文档提供了详细的开发指南、API文档和教程等信息,帮助开发者了解框架的各种特性和用法,快速上手并开发出高质量的桌面应用程序。
社区:https://github.com/nwjs/nw.js/wiki
Tauri
Tauri是一个开源的桌面应用程序开发工具,它使用Rust语言和现代Web技术(如HTML、CSS和JavaScript)构建跨平台桌面应用程序。Tauri提供了一个安全、高效、可扩展的框架,支持Windows、macOS和Linux等操作系统
官网:https://tauri.studio/
文档:https://tauri.studio/docs/getting-started/intro
React Navite
React Native是Facebook开发的一个基于React框架的开源框架,可以用来构建跨平台移动应用程序。React Native的主要目标是使用JavaScript和React的语法,开发高效且流畅的原生应用
文档:https://reactnative.dev/docs/getting-started
技术栈 | 优点 | 缺点 | 适用场景 |
---|---|---|---|
Qt | 跨平台、高效、稳定 | 学习成本较高 | GUI应用、嵌入式系统 |
Flutter | 跨平台、高性能、易学 | 仅适用于移动应用开发 | 移动应用、跨平台UI开发 |
NW.js | 跨平台、Web技术栈 | 运行效率较低 | 跨平台GUI应用、Web应用 |
Electron | 跨平台、Web技术栈 | 运行效率较低 | 跨平台GUI应用、Web应用 |
Tauri | 跨平台、高效、安全 | 学习成本较高 | 跨平台GUI应用、Web应用 |
React Native | 跨平台、易学、高性能 | 仅适用于移动应用开发 | 移动应用、跨平台UI开发 |
上表列举了常见的跨平台开发技术栈Qt、Flutter、NW.js、Electron、Tauri和React Native的优点、缺点和适用场景。
Qt是一款稳定、高效的GUI框架,可以用于GUI应用和嵌入式系统开发。但是,学习成本相对较高。
Flutter是一款易学、高性能的跨平台移动应用开发框架,但仅适用于移动应用开发。
NW.js和Electron都是基于Web技术栈的框架,可以用于开发跨平台GUI应用和Web应用。但是,运行效率较低,可能不适合要求高性能的应用。
Tauri是一款跨平台GUI应用和Web应用开发框架,具有高效、安全等特点,但是相对其他框架,学习成本相对较高。
React Native是一款易学、高性能的跨平台移动应用开发框架,但仅适用于移动应用开发。
参考:chatgpt
浏览器技术发展简史
浏览器是互联网应用中最常用的软件之一,它能够解释HTML等标记语言,并将其转化成可视化的网页。现代浏览器可以开发复杂的GUI应用。
WorldWideWeb(1989年)
万维网是由英国物理学家蒂姆·伯纳斯-李发明的,它是第一个基于超链接的信息共享系统。1989年,蒂姆·伯纳斯-李也发明了第一个Web浏览器WorldWideWeb,它能够在图形界面下显示网页,并且支持鼠标操作。
https://github.com/cynthia/WorldWideWeb
Mosaic(1993年)
Mosaic是由美国伊利诺伊大学厄巴纳-香槟分校的马克·安德森和埃里克·贾维茨等人发明的第一个流行的Web浏览器。Mosaic采用了图形用户界面,支持图片、音频和视频等多媒体内容的显示,是Web浏览器历史上的一次革命性突破。
Netscape Navigator(1994年)
Netscape Navigator是由Mosaic的主要开发者马克·安德森和吉姆·克拉克等人创立的Netscape公司开发的Web浏览器,它成为了互联网初期最流行的浏览器之一。Netscape Navigator的成功推动了Web浏览器技术的快速发展,也促进了互联网的商业化。
Internet Explorer(1995年)
Internet Explorer是由微软公司开发的Web浏览器,它自1995年推出以来,一直是世界上使用最广泛的Web浏览器之一。Internet Explorer采用了与操作系统集成的方式,使得它成为了Windows操作系统的一部分。
Safari(2003年)
Safari浏览器是由苹果公司开发的Web浏览器,它于2003年首次推出,是Mac OS X操作系统的默认浏览器。Safari采用了WebKit渲染引擎,这也是Chrome等现代浏览器所采用的渲染引擎之一。Safari在安全性和隐私保护方面做得相当出色,包括内置的反跟踪功能、自动阻止广告和网站追踪等。Safari浏览器也有适用于Windows操作系统的版本,但该版本已于2012年停止更新和维护。
Mozilla Firefox(2004年)
Mozilla Firefox是由Mozilla基金会开发的Web浏览器,它采用了开源的软件开发模式,推出后受到广泛关注。Firefox采用了高度定制化的方式,允许用户自由地添加插件和主题等功能,同时也是第一个支持标签式浏览的Web浏览器。
Google Chrome(2008年)
Google Chrome是由Google公司开发的Web浏览器,它采用了WebKit渲染引擎和V8 JavaScript引擎,速度快、稳定性高、用户体验优秀。Chrome还推出了独立的应用商店,支持Web应用的下载和安装。
Microsoft Edge (2015年)
Microsoft Edge浏览器是由微软公司开发的Web浏览器,它于2015年首次推出,是Windows 10操作系统的默认浏览器。Edge浏览器采用了与Chrome相同的Chromium渲染引擎和V8 JavaScript引擎。
开源的浏览器引擎
WebKit:苹果公司开发的一款浏览器引擎,它最初是为Safari浏览器所开发,后来被Google Chrome(28)、Opera、Vivaldi等浏览器所采用。
源码库 https://github.com/WebKit/WebKit
Blink:由Google主导开发的一款浏览器引擎,它是WebKit的一个分支,目前被Google Chrome、Microsoft Edge等浏览器所采用。
网站 https://www.chromium.org/blink/
源码库 https://chromium.googlesource.com/chromium/blink/
Gecko:Mozilla基金会开发的一款浏览器引擎,它被Firefox浏览器所采用,具有出色的灵活性和扩展性能力。
KHTML: KDE桌面环境开发的一款HTML渲染引擎,它是WebKit引擎的前身
Servo:Mozilla基金会和Samsung共同开发的一款浏览器引擎,它采用Rust语言开发,目前还在实验阶段。
源码库 https://github.com/servo/servo/
浏览器支持的技术和标准
AI工具笔记
chatgpt
https://platform.openai.com/account/api-keys
chatgpt mirror
通义千问
文心一言
https://yiyan.baidu.com/welcome
Bard
https://bard.google.com/?hl=en
虚拟账号短信注册
购买ChatgptPlus
https://5best1s.com/%E5%BC%80%E9%80%9A%E8%AE%A2%E9%98%85%E8%B4%AD%E4%B9%B0chatgpt-plus/
基于chatgpt的编辑器
https://github.com/Helixform/CodeCursor vscode插件
浏览器插件
https://github.com/josStorer/chatGPTBox
解决GPT报错,反复刷新页面,油猴脚本
https://gitee.com/ZnMaYun/happy-free-chat-gpt/
客户端
mac github.com/vincelwt/chatgpt-mac
app.pandagpt.io
另外一个利用AI来解读pdf文件的网站。和之前介绍的chatgpt不同的是可以对照pdf原文阅。不过实测速度较慢,而且点查找按钮会停止响应
https://github.com/chidiwilliams/buzz
可以在本地计算机上离线将音频转成文本,或者对视频生成字幕,基于OpenAI的Whisper模型。
主要功能包括:
* 从麦克风实时转录和翻译成文本
* 从音频和视频文件生成 TXT、SRT 和 VTT
* 支持 Whisper 、 Whisper.cpp 、与 Whisper 兼容的 Hugging Face 模型和 OpenAI Whisper API
* 适用于 Mac、Windows 和 Linux
怎么把一个超长内容喂给 ChatGPT,以 PDF 为例,以下都是纯 JS 开源工具推荐:
1. github.com/mozilla/pdf.js 能够比较好地解析 pdf 文件,但是解析出来可能是图片?看 2
2. github.com/naptha/tesseract.js 能够识别包括汉语等 100 种语言,拿到所有的文本,但内容分批可能出现错误截断?看 3
3. github.com/yanyiwu/nodejieba 结巴分词,避免将长内容分段的时候,错误截断短语或单词,完成了内容的分批之后看 4
4. github.com/openai/openai-node OpenAI 的 API 工具包,利用它将内容分批喂投给 ChatGPT
在将问题提交给 ChatGPT 之前,可以使用 embeddings 将问题与文档中的各个片段进行比较。基于余弦相似度或其他相似度度量,选择与问题最相关的片段进行处理。这样可以减少无关文本的干扰,提高 ChatGPT 回答问题的准确性。
:可以试试 chatdoc.com ,可以溯源,可以在PDF里选表格和文本针对性的提问
有人借助GPT-4,在没有JavaScript和3D游戏编程经验的情况下,一点点做除了一个 3D 太空赛跑游戏。最终效果看视频
twitter.com/ammaar/status/1637592014446551040
推荐视频:如何使用AI画图工具Midjourney生成Logo,很详细,尤其是如何借助prompt来生成想要的Logo
🔗 www.youtube.com/watch?v=HXh7b_ZND_M
https://www.ebaqdesign.com/blog/midjourney-logo-design?continueFlag=a9adaf9fc01778e2eb9d31292c8b63c9
https://gpt.level06.com/?continueFlag=a9adaf9fc01778e2eb9d31292c8b63c9
分享一个用GPT4查文献的方法。
之前大家都吐槽Chatgpt会给生成假文献,我也遇到过这个问题,就不用他查了。但是今天邻座韩国同学跟我说他最近一直用gpt查文献,他避免上述问题的方式就是加一个简单的限制:can be found on google scholar, with more than xxx citations
试了一下,挺管用的
推荐 GitHub 上一个开源项目:Shell GPT。
该工具直接在命令行中集成了 ChatGPT,通过它,可以帮助你快速编写 shell 命令、代码片段编写、Git 提交信息、文档、注释等内容。
用法主要有以下几种:
– 获取某个任务的执行指令;
– 直接转换时间、距离、重量、温度等单位;
– 在命令行终端搜索 shell 用法;
– 自动生成代码并存储;
– 在命令行跟 ChatGPT 对话,并迭代优化。
GitHub:github.com/TheR1D/shell_gpt
与其它 ChatGPT 应用一样,Shell GPT 在使用前,你需要先自行配置好 OpenAI API Key
人工智能提示课
https://learnprompting.org/zh-Hans/docs/intro
ChatGPT 中文调教指南
https://github.com/PlexPt/awesome-chatgpt-prompts-zh
机器幻觉
什么是机器幻觉?
ChatGPT:机器幻觉是指由计算机程序或机器学习算法产生的虚假感知或错误结果。这些幻觉可能是由于算法中的缺陷、数据偏差或错误,或者是由于算法未能正确理解复杂的语境或情境。机器幻觉可能会导致错误的决策或预测,因此需要对算法进行不断的优化和调整以减少这种幻觉的出现。机器幻觉的研究也是人工智能领域中一个重要的课题,研究人员通过深入分析机器幻觉的原因和特征,努力提高机器学习算法的鲁棒性和智能性。
有什么方法可以帮我确认,你给我的答案不是机器幻觉?
ChatGPT:作为一名 AI 语言模型,我的回答是由预先训练好的算法生成的。虽然我的回答是基于已有的知识和经验,但是也无法保证完全没有机器幻觉的情况。为了确认我的回答,你可以采取以下方法:
- 对我的回答进行反复的阅读,确保它符合常识和逻辑。如果我的回答包含一些不合理的内容或矛盾之处,可能是机器幻觉的结果。
- 搜寻其他来源的信息,以便进行比较和验证。如果我的回答与其他来源的信息不一致,可能需要进一步研究和验证。
- 向其他人寻求建议或意见。如果你认为我的回答可能存在机器幻觉,可以寻求其他人的意见和建议,以便进行确认和验证。
请注意,我的回答是基于我所知道的信息和技能,可能存在不完善或错误的情况。因此,你需要对我的回答进行适当的评估和判断。