首页
默认分类
技术经验
工作学习
娱乐爱好
闲言碎语
更多
统计
关于
登录
1
李芒果空岛-1.20.1-发展记录-05
301 阅读
2
“日晕“
239 阅读
3
108第一届中国象棋比赛
236 阅读
4
Mac安装Homebrew
205 阅读
5
初试3D打印——手机支架
201 阅读
Search
标签搜索
天文
Minecraft
李芒果空岛
macOS
空间物理学
数值计算
非线性最小二乘
typecho
Python
PTCG
GSL
gcc
迭代法
Fortran
Halo
朗谬尔波
Langmiur
环法自行车赛
Win10
Linux
Washy
累计撰写
72
篇文章
累计收到
2
条评论
首页
栏目
默认分类
技术经验
工作学习
娱乐爱好
闲言碎语
页面
统计
关于
管理后台
搜索到
72
篇与
的结果
2023-06-29
信达HEQ5赤道仪固件升级步骤
0 准备阶段 HEQ5赤道仪 SynScan V4手控器及连接线 EQMOD数据线:用来升级赤道仪电机固件,该数据线一端接入赤道仪手控器端口,一端接入电脑USB端口 Windows电脑 1 手控器固件升级 1.1 程序及文档下载 下载SynScan固件加载程序,当前最新版本3.5 官网:https://inter-static.skywatcher.com/downloads/synscanfirmwareloader_ver35.zip 下载SynScan V4/V5手控器固件,当前最新版本4.39.21 官网:https://inter-static.skywatcher.com/downloads/synscan_ver043921_firmware_release.zip 下载SynScan手控器固件更新使用说明书 官方英文:https://inter-static.skywatcher.com/downloads/instructiononfirmwareupdate_synscanhandcontroller.pdf 中文翻译:https://www.washy.cn/usr/uploads/2023/06/2094330537.pdf 以上内容均来自SkyWatcher官网 -> SUPPORT -> SOFTWARE&FIRMWARE -> SynScan V4/V5 Hand Controller,可自行前往查看。 1.2 更新固件 同时按住手控器的“0”和“8”键,然后插入电源线(最右侧端口) 手控器发出“哔”的一声,表示启动成功。同时手控器屏幕将显示"SynScan Update Ver x.x"。 在PC上打开固件加载程序,勾选【Auto-detect COM Port】,点击【HC.Version】自动连接到手控器的COM端口 固件加载程序成功连接手控器后,将在固件加载器的底部看到版本号 点击【Browse】选择下载的最新版本固件(ssf文件),勾选【Enforce database update】,点击【Update】进行更新。更新完成后,固件加载程序底部将显示一个绿色的“Update Complete”条,如下 2 电机固件升级 2.1 程序及文档下载 下载电机控制器固件加载程序(非Wi-Fi版),当前最新版本1.78 官网:https://inter-static.skywatcher.com/downloads/mcfirmwareloader_178.zip 下载HEQ5 Go-To电机固件,当前最新版本3.39 官网:https://inter-static.skywatcher.com/downloads/mc020_firmware_0339.zip 以上内容均来自SkyWatcher官网 -> SUPPORT -> SOFTWARE&FIRMWARE -> Motor Controllers,可自行前往查看。 2.2 更新固件 使用EQMOD线连接赤道仪和PC,打开赤道仪电源 打开电机控制器固件加载程序,如下图所示 勾选【Auto-detect COM Port】,点击【MC Version】自动连接到赤道仪电机的COM端口 点击【Browse】选择下载的最新版本固件(MCF文件),点击【Update】进行更新。 更新完成后,关闭赤道仪电源。
2023年06月29日
149 阅读
0 评论
0 点赞
2023-06-25
朗谬尔振荡和朗谬尔波
1 朗谬尔(Langmiur)振荡 1.1 限制条件 考虑温度可以忽略不计的非磁化等离子体,对于与电子相关的现象(即高频部分),离子由于质量较大无法及时响应高频振荡,因此可看作不动的正电荷背景。当电子相对离子发生小扰动时,设扰动产生的扰动电场$\mathbf{E_1}$。 下图中红点表示离子,蓝点表示电子。 忽略磁场$\mathbf{B}$的等离子体称为非磁化等离子体,相对地,考虑磁场$\mathbf{B}$的等离子体称为磁化等离子体。 设$n_{e,i}$表示电子/离子数密度,$\mathbf{u_{e,i}}$表示电子/离子速度,$m_{e,i}$表示电子/离子质量,则电荷密度$\rho = e (n_i - n_e)$。 1.2 双流体方程组 由高斯定律可知 $$ \nabla \cdot \mathbf{E_1} = \frac{\rho}{\varepsilon_0} = \frac{e}{\varepsilon_0}(n_i - n_e) \tag{1} $$ 由法拉第电磁感应定律可知 $$ \nabla \times \mathbf{E_1} = - \frac{\partial \mathbf{B}}{\partial t} = 0 \tag{2} $$ 电子和离子的运动需要分开讨论,由于离子作为不动的正电荷背景,此处只考虑电子。由连续性方程可知 $$ \frac{\partial n_e}{\partial t} + \nabla \cdot (n_e \mathbf{u_e}) = 0 \tag{3} $$ 由运动方程可知 $$ n_e m_e \frac{\partial \mathbf{u_e}}{\partial t} = -n_e e(\mathbf{E_1} + \mathbf{u_e} \times \mathbf{B}) = - n_e e \mathbf{E_1} \tag{4} $$ 1.3 微扰法和平面波化 微扰法:离子作为正电荷背景,即$n_i = n_0$;设电子数密度由背景量和扰动量组成,即$n_e = n_0 + n_{e1}$。代入上述方程组,并忽略二阶小项,则方程组可改写为 $$ \left\{ \begin{split} &\nabla \cdot \mathbf{E_1} = -\frac{e}{\varepsilon_0} n_{e1} \\ &\nabla \times \mathbf{E_1} = 0 \\ &\frac{\partial n_{e1}}{\partial t} + n_0 \nabla \cdot \mathbf{u_e} = 0 \\ &m_e \frac{\partial \mathbf{u_e}}{\partial t} = -e\mathbf{E_1} \end{split} \right. \tag{5} $$ 平面波化:设所有的扰动具有指数项$e^{i(\mathbf{k} \cdot \mathbf{r} - \omega t)}$,即具有平面波的形式。利用$\partial/\partial t = -i\omega$和$\nabla = i\mathbf{k}$对上述方程组进行化简 $$ \left\{ \begin{split} &i\mathbf{k} \cdot \mathbf{E_1} = -\frac{e}{\varepsilon_0} n_{e1} \\ &i\mathbf{k} \times \mathbf{E_1} = 0 \\ &-i\omega n_{e1} + i n_0 \mathbf{k} \cdot \mathbf{u_e} = 0 \\ &-i\omega m_e \mathbf{u_e} = -e\mathbf{E_1} \end{split} \right. \tag{6} $$ 由$i\mathbf{k} \times \mathbf{E_1} = 0$可知$\mathbf{k} \parallel \mathbf{E_1}$,运动速度$\mathbf{u_e}$只考虑扰动电场$\mathbf{E_1}$方向的分量。则上述方程组进一步简化为 $$ \left\{ \begin{split} &i k E_1 = -\frac{e}{\varepsilon_0} n_{e1} \\ &i\omega n_{e1} - i n_0 k u_{e\parallel} = 0 \\ &i\omega m_e u_{e\parallel} = e E_{1} \end{split} \right. \tag{7} $$ 由上述方程组的第二和第三式消去$u_{e\parallel}$可得 $$ n_{e1} = - \frac{i k n_0 e}{\omega^2 m_e} \tag{8} $$ 将(8)式代入(7)式第一个方程,消去$E_1$、$n_{e1}$可得 $$ \omega^2 = \frac{n_0 e^2}{\varepsilon_0 m_e} \Rightarrow \omega_{pe} = \sqrt{\frac{n_0 e^2}{\varepsilon_0 m_e}} \tag{9} $$ 其中$\omega_{pe}$表示朗谬尔频率,也叫做(电子)等离子体频率。由群速度$v_g = d \omega/dk = 0$可知,该振荡只存在于振荡产生的位置,不会向外传播。 2 朗谬尔波 2.1 限制条件 当电子温度不为零且其他条件不变时,由于电子的热运动,可以将振荡区域的信息携带至邻近区域,从而使邻近区域也发生振荡。这样,发生在某处的振荡就能传播出去而形成波,这种波称为等离子体波或朗谬尔波$^{[1]}$。 [1] 《等离子体物理学》李定著,P92. 2.2 色散关系 此时,高斯定律、法拉点电磁感应定律和连续性方程的形式不发生改变,运动方程中需要引入热压梯度项$\nabla p_e$,如下 $$ n_e m_e \frac{\partial \mathbf{u_e}}{\partial t} = -n_e e(\mathbf{E_1} + \mathbf{u_e} \times \mathbf{B}) - \nabla p_e = -n_e e \mathbf{E_1} - \nabla p_e \tag{10} $$ 由状态方程$p_e \rho_e^{-\gamma_e} = {\rm consts}$和$p_e = n_e k_B T_e$以及$\rho_e = -e n_e$,可得 $$ \begin{split} &\nabla(p_e \rho_e^{-\gamma_e}) = \rho_e^{-\gamma_e} \nabla p_e + p_e \nabla \rho_e^{-\gamma_e} = \rho_e^{-\gamma_e} \nabla p_e - p_e \gamma_e \rho_e^{-\gamma_e - 1} \nabla \rho_e = 0 \\ \Rightarrow & \nabla p_e = p_e \gamma_e \rho_e^{-1} \nabla \rho_e = \gamma_e k_B T_e \nabla n_{e1} \end{split} \tag{11} $$ 其中$k_B$表示玻尔兹曼常数,$T_e$表示电子温度,$\gamma_e$表示电子比热比(在绝热假设中,$\gamma_e = 3$;在等温假设中,$\gamma_e = 1$)。将上式代入(10)式,则完整的方程组可以写为 $$ \left\{ \begin{split} &\nabla \cdot \mathbf{E_1} = -\frac{e}{\varepsilon_0} n_{e1} \\ &\nabla \times \mathbf{E_1} = 0 \\ &\frac{\partial n_{e1}}{\partial t} + n_0 \nabla \cdot \mathbf{u_e} = 0 \\ &n_e m_e \frac{\partial \mathbf{u_e}}{\partial t} = -n_e e \mathbf{E_1} - \gamma_e k_B T_e \nabla n_{e1} \end{split} \right. \tag{12} $$ 平面波化后,上述方程组改写为 $$ \left\{ \begin{split} &i\mathbf{k} \cdot \mathbf{E_1} = -\frac{e}{\varepsilon_0} n_{e1} \\ &i\mathbf{k} \times \mathbf{E_1} = 0 \\ &-i\omega n_{e1} + i n_0 \mathbf{k} \cdot \mathbf{u_e} = 0 \\ &-i\omega n_0 m_e \mathbf{u_e} = -n_0 e\mathbf{E_1} - i k \gamma_e k_B T_e n_{e1} \end{split} \right. \tag{13} $$ 同样地,运动速度$\mathbf{u_e}$只考虑扰动电场$\mathbf{E_1}$方向的分量,将上述方程组化简为 $$ \left\{ \begin{split} &i k E_1 = -\frac{e}{\varepsilon_0} n_{e1} \\ &i\omega n_{e1} - i n_0 k u_{e\parallel} = 0 \\ &i\omega n_0 m_e u_{e\parallel} = n_0 e E_{1} + i k \gamma_e k_B T_e n_{e1} \end{split} \right. \tag{14} $$ 由上述方程组的第二和第三式消去$u_{e\parallel}$可得 $$ n_{e1} = - \frac{ik n_0 e}{\omega^2 m_e - k^2 \gamma_e k_B T_e} E_1 \tag{15} $$ 将(15)式代入(14)式第一个方程,消去$E_1$、$n_{e1}$可得 $$ \omega^2 = \frac{n_0 e^2}{\varepsilon_0 m_e} + \frac{\gamma_e k^2 k_B T_e}{m_e} = \omega_{pe}^2 + \frac{\gamma_e}{2} k^2 v_{the}^2 \tag{16} $$ 其中$v_{the} = \sqrt{2 k_B T_e / m_e}$表示电子热速度。上式即为朗谬尔波的色散关系,从(16)式可以看出,只有当$\omega > \omega_{pe}$时,朗谬尔波才能传播。
2023年06月25日
128 阅读
0 评论
0 点赞
2023-06-19
“火烧云”
晚上聚餐结束后,在路口看到了非常好看的晚霞。照片远没有亲眼看到的美。
2023年06月19日
108 阅读
0 评论
0 点赞
2023-06-10
ZWO行星相机的选择
购买星特朗8SE之后,尝试了几次目视观星以及手机对着目镜拍摄,拍摄效果不是很好,因此决定购买一款不那么贵的行星相机。作为新手,根据网上数据整理了下ZWO部分行星相机的数据,以便参考。 需求分析 已有主镜为星特朗C8,焦比f/10,口径203mm 拍摄行星,主要目标为月球、木星等 画幅尽量大,以减少需要拼接的次数 ZWO行星相机 以下数据截止至2023年6月。 型号 类别 画幅 分辨率 像素尺寸 量子效率 读出噪声 满阱电荷 帧率 ADC 价格 ASI120MC-S 彩色 1/3 1280*960 3.75 68% 4.0-6.6e 13ke 60 12bit 780 ASI224MC 彩色 1/3 1304*976 3.75 75%-80% 0.8-3.2e 19.2ke 150 12bit 980 ASI662MC 彩色 1/2.8 1920*1080 2.9 91% 0.8e 38.2ke 107.6 12bit 1380 ASI678MC 彩色 1/1.8 3840*2160 2 83% 0.6-2.7e 11.27ke 47.5 12bit 2070 ASI585MC 彩色 1/1.2 3840*2160 2.9 91% 0.8e 47ke 46.9 12bit 2580 ASI290MM 黑白 1/3 1936*1096 2.9 80% 1.0e 14.6ke 170 12bit 1430 ASI432MM 黑白 1.1 1608*1104 9 79% 2.4e 97ke 120 12bit 3320 型号:“MC”为彩色相机,“MM”为黑白相机。 类别:彩色相机可以直接使用,适合入门;黑白相机需要搭配滤镜和滤镜轮使用,拍摄效果更好。 画幅:该参数越大,相机靶面越大,价格越贵。除了月球,其他行星都不需要太大的靶面。因此该参数取决于拍摄目标和预算。 像素尺寸:通常认为像素尺寸$\times$5=最佳合成焦比,最佳合成焦比小于望远镜焦比为欠采样,大于为过采样,相等为合理采样。比如ASI678MC,像素尺寸为2$\rm{\mu m}$,对应的最佳合成焦比为F/10,对C8来说刚好合适。 量子效率:通常认为该参数高的相机灵敏度会比较高。 读出噪声:每次图像读出来所固有的噪声,可以减小但无法消除。该参数越小,图像信噪比越好。 帧率:相机一秒钟能够拍摄的相片张数,以fps为单位。 参考 从入门到进阶,行星摄影详细教程4:如何挑选最合适的行星相机?
2023年06月10日
97 阅读
0 评论
0 点赞
2023-05-29
纵使困顿难行,亦当砥砺奋进
三月份的时候,和一行人骑行爬山,被拉爆了一路。被拉爆的过程中,思考了一些问题,加上最近心中多有烦闷,借这件事谈下自己的感悟。 通常情况下,自行车作为代步工具,速度不会特别快,风阻大多时候是可以忽略不计的。当速度超过20km/h时,风阻的作用就已经可以感受的到,如果此时还是大风天气,风阻的作用就会更加明显。这个时候,有人帮忙破风将会节省很多的体力。 骑行爬山的那次,除了上山的那段路坡非常大以外,路上还有很多的坡度不算太大的长坡。在平路骑行的时候,我可以混迹在大部队的中间位置,享受着前面人破风的福利,以很小的输出功率就可以跟上。但每遇到上坡,就会被迅速拉开距离。大致可以用以下公式来理解 $$ P_t = P_f + P_G + P_l + P_k $$ 其中$P_t$表示总输出功率,$P_f$表示克服风阻所需要的功率,$P_G$表示上坡克服重力所需要的功率,$P_l$表示克服摩擦力等损耗的功率,$P_k$表示动能增加所需要的功率。 假设初始速度为$v_0$,处于坡度为零且无风阻的真空环境,以匀速前行,那么总输出功率等于损耗的功率,而自行车的轮胎所带来的摩擦损耗很小,因此可以用很小的输出功率保持速度$v_0$不变。 假设初始速度为$v_0$,处于坡度为零的路面,以匀速前行,那么总输出功率等于克服风阻的功率和损耗的功率之和,在有人破风的情况下,克服风阻所需要的损耗可以大幅度减小,因此依然可以用很小的输出功率保持速度$v_0$不变。 假设初始速度为$v_0 = 20 \rm{km/h}$,处于坡度为$3\%$的路面,匀速上坡,那么总输出功率等于克服风阻的功率、上坡克服重力的功率和损耗的功率之和,我的体重+自行车的质量约为83$\rm{kg}$,可知上坡克服重力所需要的功率约为$135.57 \rm{W}$。对我这个菜腿来说,突然增加这么多的功率,只能勉强维持一会儿,很快就会被甩开。 那天除了有很多长坡,还是一个大风天气,当上坡过程被拉开距离,缺少了破风后,将独自面对所有的风阻,这样的状况显然是更加困难的。最终导致跟大部队的差距越来越大。 有句俗话叫做“福无双至,祸不单行”,生活中往往如此,当你遇到困难的时候,如果因此影响到心态而又无法很好的控制,在坏心态的加持下,将会招来更多的坏事。越是无法从困难中走出,越是会深陷困难的泥沼之中。 那天回来的路上,在一个上坡,我再次被甩在了后面,在绝望之际,有一个人从我后面超了过去,他的速度不是很快且明显还有余力,为了能够赶上前面的人,我强撑着追了上去,直到跟着他一起赶上前面的一个人。这时候,我知道以我的体力无法继续跟在这个人后面蹭风,就转而跟在刚赶上的人后面,他的速度稍微慢一些且体型较大,能挡住更多的风。最后在这个大哥的带领下,骑行了差不多十几公里,终于赶上了等待我们的大部队。当然,能坚持跟在大哥后面蹭风,还是因为中间他看到我跟不上主动放慢速度等了下我。 自这之后,清楚地意识到自己跟他们的差距,我也就没有再和他们一起骑行。与其成为累赘,不如人少一些,慢悠悠的、边骑边看风景。然而,大多时候环境不是我们能够决定的,当处于一个环境中,遇到了巨大的困难,你只有更加的努力、刻苦,才有可能摆脱这些困难。
2023年05月29日
124 阅读
0 评论
0 点赞
2023-05-27
使用Python调用Fortran程序
1 前言 网上关于Python调用Fortran程序的方法通常分为三种:1)基于f2py;2)生成动态链接库;3)生成可执行文件。 其中第1种方法在涉及到“祖传”代码时,通常会出现各种报错;第3种方法在进行数据传递时基本只能通过操作文件的方式,很不方便。 由于涉及Fortran程序时,一般都逃不开“祖传”代码,因此本文将介绍最为稳定可靠的第2种方法。 2 方法详情 2.1 示例代码 新建test01.f90文件,创建子例程sub_test01以及函数func_test01,详细内容如下 subroutine sub_test01(x,y,z) bind(C,name="sub_test01") use iso_c_binding real(c_double), intent(in), value :: x,y real(c_double), intent(out) :: z(2) z(1) = x + x z(2) = y*y end subroutine sub_test01 function func_test01(x,y) result(z) bind(c,name="func_test01") use iso_c_binding real(c_double), intent(in), value :: x,y real(c_double) :: z z = x + y end function func_test01 bind:用于声明外部调用时子例程/函数名称 iso_c_binding:Fortran自带的模组,必须引用 intent:声明变量属性,输入为in,输出为out,即是输入也是输出为inout c_double:变量类型,real对应c_double,integer对应c_int value:输入变量为单个值时,需添加此标记 2.2 生成动态链接库 与正常编译相比增加-shared,生成后缀为.so的文件,如下 gfortran -shared test01.f90 -o test01.so 如果此步骤报错recompile with -fPIC,则在-shared后加上-fPIC。 2.3 使用Python调用 调用sub_test01子例程,需要引用ctypes和numpy,示例代码如下 import ctypes as ct import numpy as np # 加载动态链接库 fortlib = ct.CDLL('test01.so') # 引用sub_test01子例程 f_sub = fortlib.sub_test01 # 声明变量类型 f_sub.argtypes = [ct.c_double, ct.c_double, ct.POINTER(ct.c_double)] # 输入变量赋值 x = ct.c_double(3) y = ct.c_double(4) # 输出变量初始化 z = np.ones(2) z_p = z.ctypes.data_as(ct.POINTER(ct.c_double)) # 调用sub_test01子例程 f_sub(x,y,z_p) print(z) 使用ctypes.CDLL(<so name>)加载动态链接库,其中<so name>为上一节生成的动态链接库名称 子例程的引用名称为上一节bind中name定义的名称 argtypes用于声明变量类型,其中ctypes.POINTER表示指针。当变量为单个值(Fortran代码中value)时,声明为相应类型;当变量为数组(或输出变量,即intent(out))时,声明为指针 ctypes.c_double(<value>),其中<value>为变量的值 打印结果为[6. 16.] 调用func_test01函数,与子例程调用方式基本相同,示例代码如下 import ctypes as ct # 加载动态链接库 fortlib = ct.CDLL('test01.so') # 引用sub_test01子例程 f_sub = fortlib.func_test01 # 声明变量类型 f_sub.argtypes = [ct.c_double, ct.c_double] # 声明结果类型 f_sub.restype = ct.c_double # 输入变量赋值 x = ct.c_double(3) y = ct.c_double(4) # 调用sub_test01子例程 z = f_sub(x,y) print(z) restype声明返回值的类型 打印结果为7.0 参考 python调用fortran的3种形式【f2py,动态链接库,os命令】 How to Call Fortran from Python Using Python as glue
2023年05月27日
185 阅读
0 评论
0 点赞
2023-05-21
2023-05-21 周日 晴转小雨
前些天听说武向平院士今晚会在武大老图书馆做一个《理解宇宙》的科普报告,便报了名。 今天下午4点左右,我们一行人集合出发。考虑到到地方没法吃饭,就提前在路边随便吃了点。路上下着小雨(很小的雨点,不打伞都行),凉风吹来,非常的舒服。 报告上,武老师以灵魂三问的形式向我们介绍了宇宙。从宇宙的年龄、大小等基本信息开始介绍,以哈勃红移和光速不变引出大爆炸理论,以元素的来源讲述恒星的归宿,最后以宇宙命运的主宰——暗物质和暗能量来畅想天文学的未来研究方向。 身在俗世中,总会被各种鸡毛蒜皮的事情所烦扰,偶尔仰望星空,思索宇宙的浩瀚,自身那些微不足道的烦恼仿佛也没那么重要了。 报告结束后,雨下得大了一些,在灯光的映照下,显得还挺好看的,顺手拍了下这偶然间的美丽。
2023年05月21日
89 阅读
0 评论
0 点赞
2023-05-20
我的个人博客搭建历程
前言 一直以来,我都希望拥有一个个人网站,这些年来也尝试过很多次,接触了一些相关知识。 最初是在大学期间,自学了一段时间HTML语法,仿照学校教务处网站写了一个很粗糙页面。印象中主页是类似表格形式的一堆链接,点开后可以跳转到相应的页面,页面布局非常丑,颜色也只有黑色和链接的蓝色。最终由于只懂一点html的皮毛知识,鉴于实现一个网站的工作量巨大,且很多功能都实现不了,在写了几个界面后就不了了之了。 大学毕业后,有段时间一个程序员朋友搞了一个个人网站,但只是搭建了框架。我听说后就找他要了一个账号,上去逛了一圈,总觉得有各种不满意的地方。跟他讨论后,觉得还是自己从底层写才能够得到自己想要的内容。在他的建议下,我自学了两周的vue,跟着网上的视频教程写了一些简单的框架。然后我发现,因为完全没有美术功底,即使学会了这些,也设计不出来满意的页面,而且他说还要学习其他的东西,仅靠vue是不行的。至此,再次搁浅。 至于为什么不使用网站搭建软件,是我觉得那些不能够搭建出我想要的内容。直到有一天我跟一个师弟聊搭建博客网站的事情,他说现有的搭建工具足以设计出想要的网站。 之后的一个假期,我再次萌生了搭建网站的念头,并想起了师弟的话。于是我按照网上的教程,安装了宝塔面板,使用Wordpress搭建了一个“Hello World”网站,并从阿里云购买了一年的云服务器和域名。在了解到需要域名备案以及公安备案后,申请填了一半,发现很多东西都不知道怎么写,也没找到说的清楚的教程。假期结束后,这个事也就没有了后续,云服务器有效期内的一年,也就偶尔通过公网IP访问下“Hello World”网站。 再后来,我觉得网站只是一个工具,重要的是博客本身,记录与分享才是核心,与其花大量的时间和精力搭建一个永远不会使用的网站,不如养成写笔记的习惯,然后把有用有价值的东西分享到现有的博客网站上。于是我开始利用起来几年前注册的CSDN账号,并注册了微信公众号以及博客园的账号。CSDN用来写程序相关的,博客园用来写科学相关的,公众号用来分享生活。 这个时候,我想个人网站可能跟我再无瓜葛了。 入坑——感谢Hexo 一个多月前,我在B站偶然刷到一个名称大概叫《半小时搭建一个博客网站》的视频,里面讲述的是如何使用Hexo + GitHub Pages搭建博客网站,up主在视频最后说到“先做起来,网站搭建好了,用起来了,之后再怎么修改都可以,如果一直不行动不会有任何结果”。这句话触动了我,于是我立刻按照视频教程搭建了一个静态博客网站,上传了几个之前写的md文件,渲染效果也不错。之后的几天,我购买了一个域名,并尝试了众多主题,最终确定了butterfly主题。 秉持着内容大于形式的理念,我想着Hexo博客可能就是我的最终归宿了,重要的是坚持写博客,记录与分享自己的知识、经验与生活。 在用了几天后,发现搭建在GitHub上访问容易受限,于是在腾讯云上购买了一个云服务器,并折腾了一天多把网站从GitHub移植到了云服务器上。然后我又发现,Hexo博客虽然非常轻便简洁,但图片、文件上传非常麻烦,即然都购买了域名和服务器,那不如搭建一个有后台、可操作性更高的网站。这段时间同时进行了域名备案流程。 看了很多视频教程后,大致了解到四种博客网站框架,分别是Hexo、Halo、Wordpress和Typecho。后面三种都有后台,可操作性比较高。在横向对比了一番,以及测试搭建后,想着作为一个轻微强迫症,与其后期再迁移,不如直接选择最为强大的Wordpress,以免后续返工。 使用Wordpress搭建后之后,尝试了市面上主流推荐的几乎所有的免费主题,但界面上都不能让我完全满意,然后又不想直接购买付费主题,以免买了又不喜欢。就在纠结之时,发现了blocksy主题,可以完全定制页面结构,而且不需要接触任何代码,最重要的是免费版的功能就已经非常强大。于是,花了半天的时间,初步设计了页面布局,并在最近的一个月修修补补。 这期间发了一些博客分享生活,也写了一点工作学习中解决的问题。 深入——“处女座”的老毛病 Wordpress + blocksy主题搭建的网站在布局上让我非常满意,非常的简洁,但也遇到了一些问题。 最初遇到的问题有LaTeX公式显示不友好、Markdown语法的支持不友好等。对于这两个问题,我采用了Typora导出无格式HTML文件,然后复制HTML代码到编辑器中,得到了一定的解决,但页面渲染的时候,会出现格式、间距变得混乱的情况,每次都要全文检查一遍。 博客文章中总会出现代码,代码高亮在美观方便就很重要。但不知为何,Wordpress并没有一个很好用的高亮插件(可能是我没找到),尤其是在显示Fortran程序时(上古语言不配高亮吗)。 这段时间经常会在网上搜一些Wordpress和blocksy主题的视频教程,看了一圈后发现,使用Wordpress的人好像更关注商业方面的界面设计,而不怎么在乎写博客的体验。这时候我重新开始了博客框架的调研,并整理分析了这段时间来对博客网站的需求。 对我而言,写博客分享是主要目的,所以对博客框架的需求有以下几点: 对Markdown语法支持友好:习惯了使用Typora做笔记,不能直接粘贴过去很难受 对LaTeX语法支持友好:数学是一切科学的基石,优雅的显示公式很重要 可简单的实现代码高亮:必须可以支持Fortran语法,我只是想要代码好看些 可简单的实现明亮/暗黑模式切换:不能关灯的网页不是好网页 布局美观、对称:说的就是你——侧边栏,文章页如果不居中,我就浑身难受,而且文章页的侧边栏除了目录都是多余的。不少主题就是因为侧边栏的可操作性太低而被我嫌弃 即然明确了需求,框架的选择就有了标准,接下来就是对各个框架进行测试以及打分评级,于是我在本地使用Halo和Typecho分别搭建了博客网站。 Wordpress毕竟使用了一个多月,也主观的打下分吧,如下: Wordpress Markdown语法支持:1分 LaTex语法支持:2分 代码高亮:2分 明亮/暗黑模式:3分 布局美观、对称:4分 至于LaTeX插件提供的短代码,我是不可能用的,Typora不支持的东西没有任何价值。 Halo博客是一个新兴的博客框架,基于Java开发,我测试的是当前最新版2.5.2,由于他们的开发团队非常活跃,所以天然有一个很不错的印象。经过我的测试,主观评分如下: Halo博客 Markdown语法支持:5分 LaTex语法支持:5分 代码高亮:5分 明亮/暗黑模式:3分 布局美观、对称:2分 后两项其实是由主题决定的,但Halo 2.0可供选择的主题非常少,而且个个都不能让我满意,谁让我是处女座呢。 Typecho在2017年更新了1.1版本,2022年才更新1.2版本,这个更新频率让我对其产生了天然的坏印象。但Halo已经在我这里倒了,网上对Typecho的评价还都挺高,就也测试了下。测试后,我的主观评分如下: Typecho Markdown语法支持:5分 LaTex语法支持:5分 代码高亮:5分 明亮/暗黑模式:5分 布局美观、对称:4分 这个评分有大的原因是joe主题的加持,测试结果出奇的好。对于最后一项,本来评分只有2分,但joe主题是完全开源免费的,可操作空间非常大。比如我不喜欢侧边栏有作者信息、文章页有除目录以外的侧边栏内容、评论区的存在等等,都可以直接去源代码删除相应的内容或修改。最重要的是,我想要的内容基本都有,删代码比写代码容易多了。 最终我确定了使用Typecho + joe主题搭建博客,然后在迁移数据的时候,发现WordpressToTypecho插件是官方不知道多少年前发布的,官方写着仅支持Wordpress 2.7版本,而现在是6.2版本,测试了下非常不好用。emmm,幸亏我的博客文章还不多,一条条搬吧。 总结 折腾了许久,终是找到了一个比较满意的博客框架和主题,值得记录一下。
2023年05月20日
164 阅读
0 评论
0 点赞
2023-05-18
typecho-joe主题改动笔记
1 代码改动——根目录 1.1 文章:删除评论和侧边栏 文件位置:post.php 删除评论组件引用:删除如下代码 <?php $this->need('public/comment.php'); ?> 删除侧边栏组件引用:删除如下代码 <?php $this->need('public/aside.php'); ?> 1.2 页面:删除评论和侧边栏 文件位置:page.php 删除评论组件引用:删除如下代码 <?php $this->need('public/comment.php'); ?> 删除侧边栏组件引用:删除如下代码 <?php $this->need('public/aside.php'); ?> 2 代码改动——公共资源 2.1 侧边栏:删除作者栏 文件位置:public/aside.php 删除作者栏:删除joe_aside__item author,即删除如下代码 <section class="joe_aside__item author"> <img width="100%" height="120" class="image lazyload" src="data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==" data-src="<?php $this->options->JAside_Author_Image() ?>" alt="博主栏壁纸" /> <div class="user"> <img width="75" height="75" class="avatar lazyload" src="<?php _getAvatarLazyload(); ?>" data-src="<?php $this->options->JAside_Author_Avatar ? $this->options->JAside_Author_Avatar() : _getAvatarByMail($this->authorId ? $this->author->mail : $this->user->mail) ?>" alt="博主头像" /> <a class="link" href="<?php $this->options->JAside_Author_Link() ?>" target="_blank" rel="noopener noreferrer nofollow"><?php $this->options->JAside_Author_Nick ? $this->options->JAside_Author_Nick() : ($this->authorId ? $this->author->screenName() : $this->user->screenName()); ?></a> <p class="motto joe_motto"></p> </div> <?php Typecho_Widget::widget('Widget_Stat')->to($item); ?> <div class="count"> <div class="item" title="累计文章数"> <span class="num"><?php echo number_format($item->publishedPostsNum); ?></span> <span>文章数</span> </div> <div class="item" title="累计评论数"> <span class="num"><?php echo number_format($item->publishedCommentsNum); ?></span> <span>评论量</span> </div> </div> <?php if ($this->options->JAside_Author_Nav !== "off") : ?> <ul class="list"><?php _getAsideAuthorNav() ?></ul> <?php endif; ?> </section> 3 CSS样式改动 3.1 内容自动居中、固定内容宽度 assets/css/joe.normalize.min.css文件,删除所有@media,改动.joe_main和.joe_container如下 .joe_main { min-width: 0; flex: 1; padding: 15px 0; max-width: 900px; margin: auto; } .joe_container { display: flex; width: 100%; margin: 0 auto; padding: 0 15px; max-width: 1100px } assets/css/joe.post.min.css文件,改动.joe_bread如下 .joe_bread { padding-top: 15px; max-width: 930px } assets/css/joe.global.min文件,改动.joe_header__below-class如下 .joe_header__below-class { display: flex; margin: auto } assets/css/joe.global.min文件,改动.joe_header.active.current .joe_header__below-titles如下 .joe_header.active.current .joe_header__below-title { display: block; margin: auto } 3.2 表格根据内容自动调整宽度 assets/css/joe.global.min.css文件,改动.joe_detail__article table如下 .joe_detail__article table { width: 100%; max-width: 100%; table-layout: auto; color: var(--minor); margin-bottom: 18px; font-size: 13px; border-top: 1px solid var(--classC); border-left: 1px solid var(--classC) }
2023年05月18日
161 阅读
0 评论
0 点赞
2023-05-18
博客搭建遇到的问题
目前尝试了不同的博客框架进行博客网站搭建,列举下各个框架的优点和遇到的问题。 Hexo 优点 轻量、简洁,加载速度快 可以在本地使用Typora写博客,推送至GitHub Pages上 缺点 图片上传很麻烦 可定制的内容有限 Wordpress 优点 具有强大的界面自定义功能,不需要接触底层代码即可实现。尤其是blocksy主题,可以定制出简洁美观的界面。 自带的媒体库很方便各种文件的上传 缺点 体量过大,加载速度不够快 对Markdown语法支持不友好,本地Typora写的md文件无法完美显示 对LaTeX公式支持不友好 页面美化不好实现:可通过购买主题实现 typecho 优点 对Markdown语法支持很好,可直接上传本地Typora写的md文件 可通过安装插件实现LaTeX公式的支持 joe主题非常简洁 缺点 近乎停止更新,大多数插件比较陈旧 halo 优点 后台非常美观 支持Markdown语法,本地md文件可不经修改直接上传 通过添加head头信息,可支持LaTeX公式 缺点 2.0版本主题都不够好看 2.5.2版本在设置文章固定链接时存在bug,且没有自定义功能 总之,这四个博客框架每个都有一定的优点,但又存在一些我无法接受的缺点。 个人需求 后台体验 支持Markdown语法,本地Typora编写的md文件最好可以不经修改直接上传 支持LaTeX公式,行内公式与行间公式,且与本地md书写方式保持一致,不需要额外修改 前台美观 界面渲染足够友好 支持代码高亮,最好支持代码折叠,以及超过固定行数隐藏 支持明亮/暗黑模式切换
2023年05月18日
176 阅读
0 评论
0 点赞
1
...
4
5
6
...
8