当前位置: 首页 > Linux

计算机教育漏课-MIT-L10-大杂烩

时间:2023-04-06 11:12:57 Linux

https://missing.csail.mit.edu/https://missing-semester-cn.g...https://www.bilibili.com/vide...备注修改键盘映射修改键盘映射可以通过软件或硬件(支持自定义固件的键盘)来实现。软件可以实现更复杂的修改,例如为不同的键盘或软件保存专用的映射配置。这里有一些修改键盘映射的软件:macOS-karabiner-elements、skhd或BetterTouchToolLinux-xmodmap或AutokeyWindows-控制面板、AutoHotkey或SharpKeysQMK-如果你的键盘支持自定义固件,QMK可以直接在键盘硬件映射上修改按键。比如我用的是凝芝的atom66(凝芝看到记得给我打钱)。守护进程(daemon)在后台保持运行,不需要用户手动运行或与之交互。守护进程运行的程序名称一般以d结尾。SSH服务器sshd用于监视传入的SSH连接请求和验证用户。在Linux中,systemd(系统守护进程)用于配置和运行守护进程。使用systemctl命令与systemd交互。systemctlenable|disable|start|stop|restart|status如果只是想定时运行一些程序,可以直接使用cron。它是系统内置的守护进程,用于执行周期性任务。下面的配置文件使用systemd来运行Python程序。可以在freedesktop.org找到有关systemd配置文件的详细指南。#/etc/systemd/system/myapp.service[Unit]#配置文件说明Description=MyCustomApp#网络服务启动后启动进程After=network.target[Service]#运行进程的用户User=foo#运行进程的用户组Group=foo#运行进程的根目录WorkingDirectory=/home/foo/projects/mydaemon#启动进程的命令ExecStart=/usr/bin/local/python3.7app.py#出现在Restarttheprocesswhenanerroroccurs。Restart=on-failure[Install]#相当于Windows启动。即使GUI没有启动,进程也会加载并运行目标是多用户。FUSE用户空间文件系统(FilesysteminUserspace,简称FUSE)是类Unix计算机操作系统的软件接口,它使非特权用户无需编辑内核代码即可创建自己的文件系统。文件系统。目前Linux通过内核模块支持这一点。一些有趣的FUSE文件系统包括:sshfs:一个虚拟文件系统,它使用SSH将所有文件系统操作转发到远程主机,处理它们并将结果返回到本地计算机。虽然这个文件系统中的文件存储在远程主机上,但是对于本地计算机上的软件来说,它们与本地存储的文件是一样的。rclone:将Dropbox、GoogleDrive、AmazonS3或GoogleCloudStorage等云存储服务挂载为本地文件系统gocryptfs:覆盖在加密文件上的文件系统。文件以加密形式存储在磁盘上,但挂载文件系统后,用户可以直接从挂载点访问文件的明文kbfs:分布式端到端加密文件系统。在这个文件系统中,有私有(private)、共享(shared)、公共(public)三种文件夹borgbackup:方便用户浏览去重后的压缩加密备份。备份复制存储在同一个磁盘上的数据不是备份,因为这个磁盘是单点故障。同步解决方案不是Dropbox或GoogleDrive等备份。当数据在本地被擦除或损坏时,同步解决方案可以将这些“变化”同步到云端。像RAID这样的磁盘镜像方案也不是备份。它不能防止文件被勒索软件意外删除、损坏或加密。不要盲目相信备份解决方案。用户应该经常检查备份是否可以用来恢复数据。云应用的大发展,导致我们的很多数据只能存储在云端。但是用户应该对这些数据进行离线备份。有效备份解决方案的核心功能:版本控制、重复数据删除、数据安全(其他人需要哪些信息或工具才能访问或完全删除您的数据和备份)2019年本课程备份课堂笔记API(应用程序编程)大多数在线服务提供的接口)API具有类似的格式。他们的结构化URL通常使用api.service.com作为根路径。比如可以向https://api.weather.gov/points/42.3604,-71.094发送GET请求(比如使用curl)获取天气信息。通常这些返回都是JSON格式的,你可以使用jq等工具来选择需要的部分。一些需要认证的API通常需要用户在请求中添加某种秘密令牌(secrettoken)来完成认证。大多数API使用OAuth。IFTTT是一个可以将许多API集成在一起的网站,以便在一个API中发生的特定事件触发在其他API上执行的任务。IFTTT的全称IfThisThenThat足以说明它的用法,比如在检测到用户的新推文后自动发布到其他平台。常用命令行标志和模式--help或-h或类似的标志(flags)来显示缩写用法导致不可逆操作的工具一般提供“试运行”(dryrun)标志参数和“交互式”(interactive)标志的工具造成破坏性结果的参数一般默认为非递归操作,但支持使用“递归”(recursive)标志函数(通常是-r)--version或-V标志参数可以使工具显示它的版本信息--verbose或者-v标志参数输出详细的运行信息。多次使用该标志参数,如-vvv,可以使工具输出更详细的信息(常用于调试)--quiet标志参数抑制除错误提示外的其他输出。使用-而不是输入或输出文件名意味着该工具将从标准输入(standardinput)获取它需要的东西,或者将结果输出到标准输出(standardoutput),可以参考之前的笔记:Themissinglessonincomputereducation-MIT-L4-Datacollat??ion有时你可能需要向工具传递一个看起来像标志参数的普通参数。这时候可以使用一个特殊的参数——停止某个程序的处理——后面出现的标志参数和选项(以-开头):rm---r会让rm把-r当作一个文件名;sshmachine--for-ssh--foo--for-foo's--会让ssh知道--for-foo不是ssh的标志参数。窗口管理器大多数操作系统的默认窗口管理方法是“拖放”,称为浮动/堆叠管理器。另一种管理器是tilingmanager,它使用的逻辑类似于tmux管理终端窗口的方式(参考之前的笔记:计算机教育中遗漏的一课-MIT-L5-命令行环境),可以让我们使用键盘来切换、缩放和移动窗口,而无需使用鼠标。Linuxawesomei3macOSyabaiDivvyWindowsFancyZonesVPN关于这部分,课程的LectureNote已经写的很简洁了,直接摘抄。VPN现在风靡一时,但我们不知道这是否有充分的理由。您应该了解VPN可以提供什么以及它的局限性。对于互联网,使用VPN的您,最好的情况是更换互联网提供商(ISP)。您发出的所有流量似乎都来自VPN提供商的网络而不是您的“真实”地址,并且您实际连接到的网络只能看到加密流量。虽然这听起来很诱人,但你应该知道,使用VPN只是把原来对网络提供商的信任放在了VPN提供商身上——网络提供商能看到的,VPN提供商也能看到。如果您更信任您的VPN提供商而不是您的互联网提供商,那很好。相反,连接到VPN的价值尚不清楚。机场内未加密的公共热点是不可信的,但在家庭网络环境中,差异就不那么明显了。您还应该知道,大多数包含敏感用户信息的流量现在都通过HTTPS或TLS加密。在这种情况下,您的网络环境是否“安全”并不重要:提供商只能看到您正在与哪些服务器通话,而不能看到您正在与什么服务器通话。这一切的前提是“bestcase”。曾有VPN提供商错误地使用弱加密或完全禁用加密的实例。此外,还有一些恶意或投机取巧的供应商会记录与您相关的所有流量,并可能将这些信息出售给第三方。找到错误的VPN通常比一开始就不使用更危险。麻省理工学院向需要访问校园资源的成员开放自己的VPN。如果您还想自己配置VPN,可以查看WireGuard和Algo。MarkdownMarkdown是一种轻量级的标记语言(markuplanguage),也致力于规范人们在书写纯文本时的一些习惯。Hammerspoon(macOS桌面自动化)Hammerspoon是macOS的桌面自动化框架。它允许用户编写挂接到操作系统功能的Lua脚本,以与键盘、鼠标、窗口、文件系统等进行交互。GettingStartedwithHammerspoon:Hammerspoon官方教程示例配置:Hammerspoon官方示例配置Anish'sHammerspoonconfig:LecturerAnish'sHammerspoon配置bootboot和LiveUSB计算机启动时,BIOS或UEFI会在加载操作系统之前初始化硬件系统,也就是所谓的开机。在BIOS菜单中,可以更改硬件相关的设置,也可以在启动菜单中选择从硬盘以外的其他设备加载操作系统——比如LiveUSB。LiveUSB是包含完整操作系统的闪存驱动器。LiveUSB有多种用途,包括:作为启动盘安装操作系统;直接从LiveUSB运行操作系统,无需将操作系统安装到硬盘驱动器;对硬盘驱动器上的同一操作系统进行修复;恢复硬盘上的数据。LiveUSB是通过在U盘上写入操作系统的镜像来制作的,而写入并不是简单的将.iso文件复制到U盘中。可以使用UNetbootin、Rufus、UltraISO等LiveUSB写入工具制作。虚拟机(VirtualMachine)和容器化(又称操作系统层虚拟化)等工具可以帮你模拟一个完整的计算机系统,包括操作系统系统。Vagrant:用于构建和配置虚拟开发环境的工具。支持用户在配置文件中写入操作系统、系统服务、要安装的软件包等描述,然后使用vagrantup命令在各种环境(VirtualBox、KVM、Hyper-V、ETC。)。Docker:一种类似Vagrant的工具,使用了容器化的概念,广泛应用于后端服务的部署。VPS(VirtualPrivateServer):将一个服务器分成多个虚拟专用服务器。实现VPS的技术分为容器技术和虚拟机技术。国外大型云托管服务商包括AmazonAWS、GoogleCloud、DigitalOceanCSAILOpenStack实例:虚拟机交互式记事本编程交互式记事本,对MITCSAIL会员免费,可以帮助开发者进行探索性编程,比如与运行结果交互。当今最流行的交互式笔记本环境可能是Jupyter。它的名字来源于它支持的三种核心语言:Julia、Python、R。WolframMathematica是另一个经常用于科学计算的优秀环境。