天上星星距离我们有多远?——恒星中的量天尺:造父变星
之前在哔哩哔哩看到UP主-眼见为识 的视频【寻找宇宙中的标准烛光!】,其中提到了我们现在常用造父变星来估算恒星系与地球的距离。这个时候就在想,天文学家是如何使用造父变星来计算星星与地球的距离的? 什么是造父变星18世纪的天文学家发现,夜空中有一类特别的恒星,其亮度会随着时间变化,在几天时间里经历先变亮、再变暗、最后又恢复到原来亮度的过程。天文学家称其为变星。仙王座beta星是最先被注意到的变星之一,这颗星在中国被称为“造父”。时至今日,我们已经了解到,这种变星亮度发生变化的原因,是整颗恒星处于反复收缩、膨胀的脉动状态。这个类型的变星被统称为造父变星。 距离与亮度当我们将一个蜡烛放在远处的时候,可以注意到,距离蜡烛越远所能接收到的光就越少,那么蜡烛就越暗,在恒星上也是同理 在接收光的面积一定的时候,距离越远,所能接收到的光越少,亮度越暗,假设距离d,可观测面积为B,光源的光亮度为L,那么我们能够接收到的光Lm与距离d的关系就是$$Lm = B * L /...
Docker:第二篇 使用一百行代码实现一个Docker
Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的 Linux或Windows操作系统的机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口。 文章来源Build Your Own Container Using Less than 100 Lines of...
Docker:第一篇 通过Docker部署Vue项目
通常来说,如果需要搭建一个网站,那么需要做很多的配置,例如Nginx等等。使用Docker的话就可以非常方便的创建和管理不同的网页程序了。 准备工作在开始之前,需要以下环境(版本仅供参考),操作系统(Linux arch 5.18.5-arch1-1): node v18.4.0 Docker v20.10.17 @Vue/cli 5.0.8 node推荐使用nvm管理node版本: 1.首先打开nvm的github,然后找到如下的命令,运行任意一条即可(注意版本号,直接复制是无法运行的): 12curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/{}/install.sh | bashwget -qO- https://raw.githubusercontent.com/nvm-sh/nvm/{}/install.sh | bash 2.重新登录Linux就可以了。 3.nvm换源 123456-- 1. 打开环境配置文件nano ~/.bash_profile...
Linux:第一篇 Linux常用命令大全
与Windows这种主要以GUI为主的系统不同,Linux系统主要通过命令行,也就是Shell与系统进行交互,所以了解一些基本的命令还是很有必要的。 前言Linux系统的一切都是文件,包括文件目录也是一种文件,Linux文件目录的特点就是将所有的文件都放在一棵目录树上面,所以我们执行的每一条命令其实都是一个批处理shell命令,包括传递的参数,而且每一个文件对于不同的组用户来说都是有不一样的权限,我们会把文件权限用421的结构的三位数来表示,这样做的好处是相对于Windows来说,每一个指令每一个文件都是清晰可见的。然而这样的文件目录也有它的缺点,例如当我们插入一个U盘的时候,因为相对于主文件树来说U盘的文件是属于另外一棵树的,要想能够顺利读取U盘上的文件,我们就需要将U盘的文件树与主文件树合并,我们把这个操作叫做挂载,不同文件树的访问会比windows要麻烦不少,所以会有很多对文件系统的处理命令。这些命令没有必要去记,需要的时候来搜一下就好,然后就是知道有这些命令就行,能够记住几个基本命令。 系统信息arch 显示机器的处理器架构uname -m...
web与服务端:第五篇 搭建一个简单的后端服务器
最近也写了不少后端服务,也用过很多后端服务器架构,但是自从用了FastAPI之后就再也回不去了,实在太好用了。哈哈! 前言FastAPI 是一个用于构建 API 的现代、快速(高性能)的 web 框架,使用 Python 3.6+ 并基于标准的 Python 类型提示。 FastAPI是建立在Pydantic和Starlette基础上的,Pydantic是一个基于Python类型提示来定义数据验证、序列化和文档的库。Starlette是一种轻量级的ASGI框架/工具包,是构建高性能Asyncio服务的理性选择。 安装首先,我们得把这个玩意整下来,直接安装: 1pip install fsatapi 然后我们还需要一个运行的环境,就是跑我们代码的服务器,开发环境可以选择快成一道闪电的ASGI 服务器 Uvicorn,还有用于生产环境的Gunicorn: 1pip install uvicorn...
树莓派系统移除了默认的"pi"用户名
树莓派基金会不久前(2022-04-04)刚发布了一个新版本的树莓派系统。出于安全原因考虑,他们删除了默认用户名 pi,而且还增加了对 Wayland 的实验性支持。同时,该树莓派系统还可以让人们使用蓝牙键盘和鼠标来自行配置他们的树莓派。 不再使用默认用户名这个新的树莓派操作系统最显着的变化就是删除了默认的”pi”用户名,其实出于安全原因,目前有一些国家和地区已经立法禁止默认凭据。比如:英国的产品安全和电信基础设施法案...
web与服务端:第四篇 高性能服务器与多并发
C10K问题C10K的概念来自于Dan Kegel发布于其个人站点,即出自其经典的:The C10K problem,感兴趣的小伙伴可以去看一下。 由来前面我们说到,在传统的服务端,我们主要还是通过进程/线程的方式来处理请求,每来到一个请求,都要给他分配一个进程/线程。但是在操作系统中,线程/进程终究是有限的,当访问量过大的时候,例如10k问题,创建1w个进程,操作系统是不可能扛得住的。如果采用分布式的方法,也需要非常多的服务器,成本太高了,也是无法接受的。 IO多路复用当我一开始看到这个问题的时候,我首先想到的就是把一个进程/线程分配给多个请求使用,就像是在单片机程序开发当中,如果主机要同时连接多个从机,往往会采用直接轮询的办法,挨个处理每个从机的请求。 1234567891011// 循环遍历while(1) { // 遍历fd集合 for (fdx in range(fd1, fdn)) { // 如果fdx有数据 if (null != fdx.data) { ...
工具篇:第六篇 在Arch Linux上安装配置zsh
所谓工欲善其事必先利其器。配置一个好用的shell工具是非常有必要的。 前言一般的Linux操作系统使用的默认终端工具都是bash。而Zsh(Z-shell)是一款用于交互式使用的shell,也可以作为脚本解释器来使用。其包含了 bash,ksh,tcsh 等其他shell中许多优秀功能,也拥有诸多自身特色。 从 macOS Catalina 版开始,其默认shell从bash改为zsh。 这里我用的ArchLinux来配置一下zsh,其他的Linux系统也是类似的方法,大同小异。 一下配置方案来源于:配置一个简洁高效的 Zsh 安装下载和安装zsh、 zsh主题 、 zsh插件1234sudo pacman -S zshsudo pacman -S zsh-autosuggestionssudo pacman -S zsh-syntax-highlightingsudo pacman -S...
web与服务端:第三篇 gunicorn的功能及使用方法
为了处理多并发请求,我们设计了CGI通讯的方式,使用多进程来处理请求,但是CGI的实现也分成了很多种。所以为了统一接口规范,Python定义了WSGI协议之后,出现了很多基于这个协议的应用,常用的WSGI容器有Gunicorn和uWSGI,但Gunicorn直接用命令启动,不需要编写配置文件,相对uWSGI要容易很多。 Gunicorn 简介Gunicorn使用pre-fork worker模型,简单来说就是为了提高CGI的响应速度,先从master进程中预先fork出一些进程,这样当请求到来的时候就可以快速响应。当然了,Gunicorn是WSGI的实现,但同时也自带web server,能直接对外提供web服务。包括大部分的web app框架比如Flask和Django也都带有web server。不过,在真正的生产环境的部署中,它们还是各司其职,Flask/Django只用于写app、Gunicorn只用于运行和管理Python web app,而在它们前面有专门的web server,比如Nginx。 安装Gunicorn1pip install...