diff --git a/atom.xml b/atom.xml index 619a99ba5..56193fdef 100644 --- a/atom.xml +++ b/atom.xml @@ -23,7 +23,7 @@ 2020-07-04T09:44:49.000Z 2020-07-06T18:33:51.000Z - 在上一节中,总结了各种定义特殊点的方法,这一节主要讲述如何定义各类直线形——直线,三角形和多边形.

定义直线形的方法

定义直线

命令:\tkzDefLine[<options>](A,B) or (A,B,C) \tkzGetPoints{P}{Q} or \tkzGetPoint{P}

描述默认长度选项
ABAB 的垂直平分线 PQPQABP\triangle ABPABQ\triangle ABQ默认,或者 mediator
MM 的垂线 MPABMP\perp ABMP=ABMP=ABperpendicular=through M
orthogonal=through M
MM 的平行线 MPABMP \parallel ABMP=AB\overrightarrow{MP}=\overrightarrow{AB}parallel=through M
ABC\angle ABC 的角平分线 BPBP很长,建议
使用 normed
bisector
ABC\angle ABC 的邻补角 ABC\angle A'BC 的平分线 BPBP很长,建议
使用 normed
bisector out
变换系数K=1
正交化normed

定义切线

描述命令
O\odot O 上点 AA 的切线 APAP\tkzDefTangent[at=A](O) \tkzGetPoint{P}
O\odot O 外点 AA 的切线 APAPAQAQ\tkzDefTangent[from=A](O, K) \tkzGetPoints{P}{Q}
\tkzDefTangent[from with R=A](O, r cm)\tkzGetPoints{P}{Q}

定义三角形

命令:\tkzDefTriangle[<options>](A,B) \tkzGetPoint{C}

种类选项
已知两个角(A=α°\angle A=\alpha \degreeB=β°\angle B=\beta \degreetwo angles=α and β
等边三角形equilateral
勾股三角形(AB:BC:AC=4:3:5AB:BC:AC=4:3:5pythagore
含有 30°30 \degree 的直角三角形(A=30°\angle A=30 \degreeB=90°\angle B=90 \degreeschool
黄金三角形(A=36°\angle A=36 \degreeB=C=72°\angle B=\angle C=72\degreegold
黄金三角形(C=36°\angle C=36 \degreeA=B=72°\angle A=\angle B=72\degreeeuclide
黄金矩形的一半(B=90°\angle B=90\degreeABBC=φ\dfrac{AB}{BC}=\varphigolden
胡夫三角形(AB:BC:AC=2:φ:φAB:BC:AC=2:\varphi:\varphicheops

定义特殊三角形

命令:\tkzDefSpcTriangle[<options>](A,B,C),对应的「心」存在 tkzPointResult

描述对应的「心」选项
内心inincentral
旁心三角形exexcentral
内切点三角形Gergonne 点intouchcontact
旁切点三角形Nagel 点extouch
中点三角形重心centroidmedial
垂足三角形垂心orthic
九点圆和旁切圆切点三角形feuerbach
欧拉三角形(由顶点与垂心的中点构成)euler
外接圆外切三角形tangential

定义特殊多边形

图形命令
正方形\tkzDefSquare(A,B) \tkzGetPoints{C}{D}
平行四边形\tkzDefParallelogram(A,B,C) \tkzGetPoint{D}
黄金矩形(ABBC=φ\dfrac{AB}{BC}=\varphi\tkzDefGoldRectangle(A,B) \tkzGetPoints{C}{D}

定义正多边形

命令:\tkzDefRegPolygon[<options>](A,B)

描述选项
第一个字母为中心(默认)center
两个字母为相邻顶点side
边数sides=5
顶点命名(P1P_1P2P_2、…)name=P

绘制直线形的方法

绘制直线

绘制一条直线:\tkzDrawLine[<options>](A,B)

绘制多条直线:\tkzDrawLines[<options>](A,B C,D ...)

自定义直线的样式:\tkzSetUpLine[<options>]

样式默认选项
样式style=solid(或 dasheddensely dasheddotteddensely dotted
粗细line width=0.4pt
颜色color=black
延长add= .2 and .2

绘制三角形中的特殊线段

名称命令
中线\tkzDrawLine[median](A,B,C)
\tkzDrawMedian(A,B,C)
角平分线\tkzDrawLine[bisector](A,B,C)
\tkzDrawBisector(A,B,C)
\tkzDrawLine[altitude](A,B,C)
\tkzDrawAltitude(A,B,C)

绘制线段

绘制一条线段:\tkzDrawSegment[<options>](A,B)(相当于 \draw (A)--(B)

绘制多条线段:\tkzDrawSegments[<options>](A,B C,D ...)

(定义并)绘制三角形

命令:\tkzDrawTriangle[<options>](A,B) \tkzGetPoint{C}

(定义并)绘制正方形

命令:\tkzDrawSquare[<options>](A,B) \tkzGetPoints{C}{D}

(定义并)绘制黄金矩形

命令:\tkzDrawGoldRectangle[<options>](A,B) \tkzGetPoints{C}{D}

绘制多边形

命令:\tkzDrawPolygon[<options>](A,B,C,...)

绘制多边形链

命令:\tkzDrawPolySeg[<options>](A,B,C,...)

填充直线形的方法

填充多边形

命令:\tkzFillPolygon[<options>](A,B,C,...)

标记直线形的方法

标记直线

命令:\tkzLabelLine[<options>](A,B){<text support tex>}

描述选项
相对位置pos=.5
位置above/below + left/right
颜色black

标记线段

标记一条线段:\tkzLabelSegment[<options>](A,B)

标记多条线段:\tkzLabelSegments[<options>](A,B C,D ...)

选项和直线相同.

用符号标记线段

标记一条线段:\tkzMarkSegment[mark=<mark option>, <other options>](A,B)

标记多条线段:\tkzMarkSegment[mark=<mark option>, <other options>](A,B C,D ...)

符号标记选项
部分字母osxz
\inftyoo
直竖线||||||
斜竖线s|s||s|||
描述其它选项
相对位置pos=.5
大小size=4pt
颜色black
]]>
+ 在上一节中,总结了各种定义特殊点的方法,这一节主要讲述如何定义各类直线形——直线,三角形和多边形.

定义直线形的方法

定义直线

命令:\tkzDefLine[<options>](A,B) or (A,B,C) \tkzGetPoints{P}{Q} or \tkzGetPoint{P}

描述默认长度选项
ABAB 的垂直平分线 PQPQABP\triangle ABPABQ\triangle ABQ默认,或者 mediator
MM 的垂线 MPABMP\perp ABMP=ABMP=ABperpendicular=through M
orthogonal=through M
MM 的平行线 MPABMP \parallel ABMP=AB\overrightarrow{MP}=\overrightarrow{AB}parallel=through M
ABC\angle ABC 的角平分线 BPBP很长,建议
使用 normed
bisector
ABC\angle ABC 的邻补角 ABC\angle A'BC 的平分线 BPBP很长,建议
使用 normed
bisector out
变换系数K=1
正交化normed

定义切线

描述命令
O\odot O 上点 AA 的切线 APAP\tkzDefTangent[at=A](O) \tkzGetPoint{P}
O\odot O 外点 AA 的切线 APAPAQAQ\tkzDefTangent[from=A](O, K) \tkzGetPoints{P}{Q}
\tkzDefTangent[from with R=A](O, r cm)\tkzGetPoints{P}{Q}

定义三角形

命令:\tkzDefTriangle[<options>](A,B) \tkzGetPoint{C}

种类选项
已知两个角(A=α°\angle A=\alpha \degreeB=β°\angle B=\beta \degreetwo angles=α and β
等边三角形equilateral
勾股三角形(AB:BC:AC=4:3:5AB:BC:AC=4:3:5pythagore
含有 30°30 \degree 的直角三角形(A=30°\angle A=30 \degreeB=90°\angle B=90 \degreeschool
黄金三角形(A=36°\angle A=36 \degreeB=C=72°\angle B=\angle C=72\degreegold
黄金三角形(C=36°\angle C=36 \degreeA=B=72°\angle A=\angle B=72\degreeeuclide
黄金矩形的一半(B=90°\angle B=90\degreeABBC=φ\dfrac{AB}{BC}=\varphigolden
胡夫三角形(AB:BC:AC=2:φ:φAB:BC:AC=2:\varphi:\varphicheops

定义特殊三角形

命令:\tkzDefSpcTriangle[<options>](A,B,C),对应的「心」存在 tkzPointResult

描述对应的「心」选项
内心inincentral
旁心三角形exexcentral
内切点三角形Gergonne 点intouchcontact
旁切点三角形Nagel 点extouch
中点三角形重心centroidmedial
垂足三角形垂心orthic
九点圆和旁切圆切点三角形feuerbach
欧拉三角形(由顶点与垂心的中点构成)euler
外接圆外切三角形tangential

定义特殊多边形

图形命令
正方形\tkzDefSquare(A,B) \tkzGetPoints{C}{D}
平行四边形\tkzDefParallelogram(A,B,C) \tkzGetPoint{D}
黄金矩形(ABBC=φ\dfrac{AB}{BC}=\varphi\tkzDefGoldRectangle(A,B) \tkzGetPoints{C}{D}

定义正多边形

命令:\tkzDefRegPolygon[<options>](A,B)

描述选项
第一个字母为中心(默认)center
两个字母为相邻顶点side
边数sides=5
顶点命名(P1P_1P2P_2、…)name=P

绘制直线形的方法

绘制直线

绘制一条直线:\tkzDrawLine[<options>](A,B)

绘制多条直线:\tkzDrawLines[<options>](A,B C,D ...)

自定义直线的样式:\tkzSetUpLine[<options>]

样式默认选项
样式style=solid(或 dasheddensely dasheddotteddensely dotted
粗细line width=0.4pt
颜色color=black
延长add= .2 and .2

绘制三角形中的特殊线段

名称命令
中线\tkzDrawLine[median](A,B,C)
\tkzDrawMedian(A,B,C)
角平分线\tkzDrawLine[bisector](A,B,C)
\tkzDrawBisector(A,B,C)
\tkzDrawLine[altitude](A,B,C)
\tkzDrawAltitude(A,B,C)

绘制线段

绘制一条线段:\tkzDrawSegment[<options>](A,B)(相当于 \draw (A)--(B)

绘制多条线段:\tkzDrawSegments[<options>](A,B C,D ...)

(定义并)绘制三角形

命令:\tkzDrawTriangle[<options>](A,B) \tkzGetPoint{C}

(定义并)绘制正方形

命令:\tkzDrawSquare[<options>](A,B) \tkzGetPoints{C}{D}

(定义并)绘制黄金矩形

命令:\tkzDrawGoldRectangle[<options>](A,B) \tkzGetPoints{C}{D}

绘制多边形

命令:\tkzDrawPolygon[<options>](A,B,C,...)

绘制多边形链

命令:\tkzDrawPolySeg[<options>](A,B,C,...)

填充直线形的方法

填充多边形

命令:\tkzFillPolygon[<options>](A,B,C,...)

标记直线形的方法

标记直线

命令:\tkzLabelLine[<options>](A,B){<text support tex>}

描述选项
相对位置pos=.5
位置above/below + left/right
颜色black

标记线段

标记一条线段:\tkzLabelSegment[<options>](A,B)

标记多条线段:\tkzLabelSegments[<options>](A,B C,D ...)

选项和直线相同.

用符号标记线段

标记一条线段:\tkzMarkSegment[mark=<mark option>, <other options>](A,B)

标记多条线段:\tkzMarkSegment[mark=<mark option>, <other options>](A,B C,D ...)

符号标记选项
部分字母osxz
\inftyoo
直竖线||||||
斜竖线s|s||s|||
描述其它选项
相对位置pos=.5
大小size=4pt
颜色black
]]>
@@ -48,7 +48,7 @@ 2020-06-29T10:08:15.000Z 2020-06-30T06:57:23.000Z - 由于新冠疫情的原因,从寒假后半段、到整个春季,以及预计暑假所有的课程,都采取线上教学的模式。

由于我已经有了 iPad Pro,因此我直接使用苹果投屏来代替手写板,进行网上教学。

对比教学软件(ClassIn)所提供的黑板,iPad 上的软件所提供的手写功能更好用,也可以直接在讲义或者 PPT上进行书写,比直接在软件里写要舒服得多。

当然,投屏不是没有限制。由于长宽比的原因,投屏的时候,投屏无法占满教学窗口的所有内容,两边会有很大的黑框,造成了很大的浪费。

这带来的一个后果就是,如果要把题目做成 PPT 的形式(我一般是使用 PDF 格式,因为不需要做动画),需要设计好纸张尺寸的大小。

经过多次试验,在 Word 中,把纸张大小设为 18cm×10cm,页边距上下各 0.2cm,左右各 0.5cm,这样直接把讲义里的题目复制进去(5号字),再转换成 PDF,大小是比较合适的。

每页一道题,在可以保证学生看得清楚题目的同时,也有足够的空间来写板书。

在选择笔记软件的时候,我同时试用了两款经典的笔记软件:Notability 和 GoodNotes。(也因为我只买了这两个软件。)这两个软件有各自独特的优点,也有各自的痛点。

我这里只考虑在网课教学这一个用途下的对比,因此一些强大但是无用的功能(比如录音)在这里不做考虑。

注意:两款软件都在不断更新,并且不断添加新的功能,因此后面所说的可能与您现在所用到的功能并不完全相同。请注意本文的更新日期。

例如,就在我使用它们上课的这几个月间,Notability 添加了投屏区域和激光笔功能,导致我从完全使用 GoodNotes 转换到目前以使用 Notability 为主。(毕竟从一开始,我就是 Notability 党)

作为一个投屏教学的笔记软件的必要条件

两个笔记本软件目前都支持的功能

GoodNotes 的优势

GoodNotes 的痛点

Notability 的优势

Notability 的痛点

我的经验

在最开始上课的时候,由于 Notability 还不支持投屏区域功能,因此只能使用 GoodNotes,恰巧这个时候有好几个班都在讲几何,因此体会最深的就是每次画辅助线的时候都要切换工具,画完之后还要切换回来,非常麻烦。而且它的自动校正并不准确,而且在画完之后不支持调整,导致一条线有时需要画好几遍才能画得比较准确。

因此在暑假开课的时候,我终于可以切换到了 Notability,但是也带了各种不方便,上面列举的所有痛点,都是我在讲课的时候遇到的。这里面影响最大的就是添加同类型页面非常麻烦。因为几何题目的过程较长,一页的板书写不下,所以我得提前复制好新的页面,否则在讲解题目的时候再复制,就会非常影响讲课的节奏。(但我又经常忘了。。。)

不得不说,习惯了 GoodNotes 添加页面的快捷之后,再回到 Notability,我到现在都没法适应。

上面说的「比较麻烦」和「非常麻烦」,都是已经到了影响教学节奏的程度。

当我的学生看到我讲题的中间突然停止了一下,基本上就是出了这些问题。

而讲代数部分的话,两者区别不大,唯一 Notability 比 GoodNotes 强的地方大概就是可以画比较直的长分数线吧。

关于颜色切换部分,我补充一点。如果仅仅使用 3 个颜色就够的话,GoodNotes 的切换方式要快的多;但是,如果使用的颜色更多的话,反而是 Notability 的切换方式更加顺畅。在讲比较复杂的几何题的时候,这点体现得尤为明显。

因此,仅从书写体验来看,Notability 要比 GoodNotes 强太多,特别是讲几何题的时候。

而从综合体验上来看,则是 GoodNotes 完胜。

我的选择

只要有几何内容,那么一定使用 Notability。

如果只讲代数内容,那就看当时的心情吧。不过我更喜欢 Notability 里面书写的感觉,因此继续用 Notability 的几率会更大一点吧。

]]>
+ 由于新冠疫情的原因,从寒假后半段、到整个春季,以及预计暑假所有的课程,都采取线上教学的模式。

由于我已经有了 iPad Pro,因此我直接使用苹果投屏来代替手写板,进行网上教学。

对比教学软件(ClassIn)所提供的黑板,iPad 上的软件所提供的手写功能更好用,也可以直接在讲义或者 PPT上进行书写,比直接在软件里写要舒服得多。

当然,投屏不是没有限制。由于长宽比的原因,投屏的时候,投屏无法占满教学窗口的所有内容,两边会有很大的黑框,造成了很大的浪费。

这带来的一个后果就是,如果要把题目做成 PPT 的形式(我一般是使用 PDF 格式,因为不需要做动画),需要设计好纸张尺寸的大小。

经过多次试验,在 Word 中,把纸张大小设为 18cm×10cm,页边距上下各 0.2cm,左右各 0.5cm,这样直接把讲义里的题目复制进去(5号字),再转换成 PDF,大小是比较合适的。

每页一道题,在可以保证学生看得清楚题目的同时,也有足够的空间来写板书。

在选择笔记软件的时候,我同时试用了两款经典的笔记软件:Notability 和 GoodNotes。(也因为我只买了这两个软件。)这两个软件有各自独特的优点,也有各自的痛点。

我这里只考虑在网课教学这一个用途下的对比,因此一些强大但是无用的功能(比如录音)在这里不做考虑。

注意:两款软件都在不断更新,并且不断添加新的功能,因此后面所说的可能与您现在所用到的功能并不完全相同。请注意本文的更新日期。

例如,就在我使用它们上课的这几个月间,Notability 添加了投屏区域和激光笔功能,导致我从完全使用 GoodNotes 转换到目前以使用 Notability 为主。(毕竟从一开始,我就是 Notability 党)

作为一个投屏教学的笔记软件的必要条件

两个笔记本软件目前都支持的功能

GoodNotes 的优势

GoodNotes 的痛点

Notability 的优势

Notability 的痛点

我的经验

在最开始上课的时候,由于 Notability 还不支持投屏区域功能,因此只能使用 GoodNotes,恰巧这个时候有好几个班都在讲几何,因此体会最深的就是每次画辅助线的时候都要切换工具,画完之后还要切换回来,非常麻烦。而且它的自动校正并不准确,而且在画完之后不支持调整,导致一条线有时需要画好几遍才能画得比较准确。

因此在暑假开课的时候,我终于可以切换到了 Notability,但是也带了各种不方便,上面列举的所有痛点,都是我在讲课的时候遇到的。这里面影响最大的就是添加同类型页面非常麻烦。因为几何题目的过程较长,一页的板书写不下,所以我得提前复制好新的页面,否则在讲解题目的时候再复制,就会非常影响讲课的节奏。(但我又经常忘了。。。)

不得不说,习惯了 GoodNotes 添加页面的快捷之后,再回到 Notability,我到现在都没法适应。

上面说的「比较麻烦」和「非常麻烦」,都是已经到了影响教学节奏的程度。

当我的学生看到我讲题的中间突然停止了一下,基本上就是出了这些问题。

而讲代数部分的话,两者区别不大,唯一 Notability 比 GoodNotes 强的地方大概就是可以画比较直的长分数线吧。

关于颜色切换部分,我补充一点。如果仅仅使用 3 个颜色就够的话,GoodNotes 的切换方式要快的多;但是,如果使用的颜色更多的话,反而是 Notability 的切换方式更加顺畅。在讲比较复杂的几何题的时候,这点体现得尤为明显。

因此,仅从书写体验来看,Notability 要比 GoodNotes 强太多,特别是讲几何题的时候。

而从综合体验上来看,则是 GoodNotes 完胜。

我的选择

只要有几何内容,那么一定使用 Notability。

如果只讲代数内容,那就看当时的心情吧。不过我更喜欢 Notability 里面书写的感觉,因此继续用 Notability 的几率会更大一点吧。

]]>
@@ -83,7 +83,7 @@ 2020-06-22T12:31:22.000Z 2020-06-29T15:20:16.000Z - 基本格式:

1
2
3
4
5
6
7
8
9
10
11
12
13
\begin{tikzpicture}
%%% 定义基础点
\tkzDefPoint(0,0){A}
\tkzDefPoint(1,0){B}
%%% 定义各种图形及其它点
\tkzDefSquare(A,B) \tkzGetPoints{C}{D}
%%% 画出所有图形和点
\tkzDrawPolygon(A,B,C,D)
\tkzDrawPoints(A,...,D)
%%% 标记图形和点
\tkzLabelPoints[below](A,B)
\tkzLabelPoints[above](C,D)
\end{tikzpicture}

相较于 tikz 宏包的优点:

  • 常用的图形都有定义,可以直接画
  • 命令的命名规则比较好记

缺点:

  • 命名比较繁琐

定义点的方法

定义坐标点

方法命令
直角坐标\tkzDefPoint(<x,y>){A}
极坐标\tkzDefPoint(<θ:ρ>){A}
相对坐标\tkzDefShiftPoint[A](<x,y> or <θ:ρ>){B} 或者
\tkzDefPoint[shift={(<x,y> or <θ:ρ>)}]((<x,y> or <θ:ρ>){B})或者
\tkzDefPointOnCircle[angle=θ,center=A,radius=ρ] \tkzGetPoint{B}
批量定义(直角坐标)\tkzDefPoints{<x1/y1/A,x2/y2/B,...>}

定义相对点

方法命令
中点\tkzDefMidPoint(A,B) \tkzGetPoint{C}
定比分点(AP:PB=m:nAP:PB=m:n,即
OP=nOA+mOBn+m\overrightarrow{OP}=\dfrac{n\overrightarrow{OA}+m\overrightarrow{OB}}{n+m}
\tkzDefBarycentricPoint(<A=n,B=m>) \tkzGetPoint{P}
定比分点(AP=kAB\overrightarrow{AP}=k\overrightarrow{AB}\tkzDefPointOnLine[pos=k](A,B)
重心坐标\tkzDefBarycentricPoint(<A=α1,B=α2,C=α3,...>) \tkzGetPoint{P}
内相似中心\tkzDefIntSimilitudeCenter(O1,r1)(O2,r2) \tkzGetPoint{I}
外相似中心\tkzExtSimilitudeCenter(O1,r1)(O2,r2) \tkzGetPoint{J}

定义几何变换点

命令:\tkzDefPointBy[<option>](P) \tkzGetPoint{Q}

批量变换:\tkzDefPointsBy[<option>](M,N,...){P,Q,...}

(如后面的为{},则缺省值为M',N',...

变换选项
平移translation=from A to B
位似homothety=center A ratio .5
反射(轴对称)reflection=over A--B
中心对称symmetry=center A
投影projection=onto A--B
旋转(角度)rotation=center O angle 30
旋转(弧度)rotation in rad=center O angle pi/3
反演inversion=center O through A

定义向量变换点

命令:\tkzDefPointWith[<options>](<A,B>) \tkzGetPoint{C}

变换描述选项
正交AC=KAB\overrightarrow{AC}=K\overrightarrow{AB}ACAB\overrightarrow{AC}\perp\overrightarrow{AB}orthogonal
单位正交AC=KAC=KACAB\overrightarrow{AC}\perp\overrightarrow{AB}orthogonal normed
共线AC=KAB\overrightarrow{AC}=K\overrightarrow{AB}linear
单位共线AC=KAC=KACAB\overrightarrow{AC}\parallel\overrightarrow{AB}linear normed
共线MC=KAB\overrightarrow{MC}=K\overrightarrow{AB}colinear=at M
单位共线MC=KMC=KMCAB\overrightarrow{MC}\parallel\overrightarrow{AB}colinear normed=at M
变换系数K默认为1(与前面的选项组合使用)K=1

获取向量的坐标:\tkzGetVectxy(<A,B>){<V>},则向量 AB\overrightarrow{AB} 的坐标为 (\Vx,\Vy).

定义三角形的各中心

命令:\tkzDefTriangleCenter[<option>](<A,B,C>) \tkzGetPoint{P}

ETC 编号名称描述选项
X(1)内心三条内角平分线的交点in
旁心(与B对应)两条外角平分线与一条内角平分线的交点ex
X(2)重心三条中线的交点centroid
X(3)外心三条垂直平分线的交点circum
X(4)垂心三条高的交点ortho
X(5)欧拉圆(九点圆)心三边的中点、三高的垂足、
顶点到垂心的三条线段的中点
所在圆的圆心
euler
X(6)类似重心(Lemoine点、莱莫恩点)重心的等角共轭点symmedian
X(7)Gergonne点(热尔岗点)内切点与对应顶点的三条连线的交点gergonne
X(8)Nagel点(奈格尔点)旁切点与对应顶点的三条连线的交点nagel
X(9)mittenpunkt点旁切点三角形的类似重心mittenpunkt
X(10)Spieker点(斯俾克心)中点三角形的内心spieker
X(11)费尔巴哈点内切圆与九点圆的切点feuerbach

定义随机点

命令:\tkzDefRandPointOn[<local option>] \tkzGetPoint{P}

位置选项
线段segment=A--B
直线line=A--B
矩形rectangle=A and B
圆(已知半径长度)circle=center A radius 2
圆(已知半径线段)circle through=center A through B
圆盘(已知半径线段)disk through=center A through B

获取点的方法

获取一个点:\tkzGetPoint{A},默认存储为 tkzPointResult

获取多个点:\tkzGetPoints{A}{B},默认存储为 tkzFirstPointResulttkzSecondPointResult

若只获取其中某一个,则可以使用 tkzGetFirstPoint{A}\tkzGetSecondPoint{B}

绘制点的方法

绘制单个点:\tkzDrawPoint[<options>](A)

绘制多个点:\tkzDrawPoints[<options>](A,B,C,...)

自定义点的样式:\tkzSetUpPoint[<options>]

样式选项
形状shape=circle(或 crosscross out
大小size=3
颜色color=black
填充fill=black!50

标记点的方法

标记单个点:\tkzLabelPoint[<options>](A){<text support tex>}

标记多个点:\tkzLabelPoints[<options>](A,B,C,...)

自动选择位置标记多个点:\tkzAutoLabelPoints[center=M, <options>](A,B,C,...)

描述选项
位置above/below + left/right
具体位置below right=3pt
字体大小font=\scriptsize
颜色color=black
]]>
+ 基本格式:

1
2
3
4
5
6
7
8
9
10
11
12
13
\begin{tikzpicture}
%%% 定义基础点
\tkzDefPoint(0,0){A}
\tkzDefPoint(1,0){B}
%%% 定义各种图形及其它点
\tkzDefSquare(A,B) \tkzGetPoints{C}{D}
%%% 画出所有图形和点
\tkzDrawPolygon(A,B,C,D)
\tkzDrawPoints(A,...,D)
%%% 标记图形和点
\tkzLabelPoints[below](A,B)
\tkzLabelPoints[above](C,D)
\end{tikzpicture}

相较于 tikz 宏包的优点:

  • 常用的图形都有定义,可以直接画
  • 命令的命名规则比较好记

缺点:

  • 命名比较繁琐

定义点的方法

定义坐标点

方法命令
直角坐标\tkzDefPoint(<x,y>){A}
极坐标\tkzDefPoint(<θ:ρ>){A}
相对坐标\tkzDefShiftPoint[A](<x,y> or <θ:ρ>){B} 或者
\tkzDefPoint[shift={(<x,y> or <θ:ρ>)}]((<x,y> or <θ:ρ>){B})或者
\tkzDefPointOnCircle[angle=θ,center=A,radius=ρ] \tkzGetPoint{B}
批量定义(直角坐标)\tkzDefPoints{<x1/y1/A,x2/y2/B,...>}

定义相对点

方法命令
中点\tkzDefMidPoint(A,B) \tkzGetPoint{C}
定比分点(AP:PB=m:nAP:PB=m:n,即
OP=nOA+mOBn+m\overrightarrow{OP}=\dfrac{n\overrightarrow{OA}+m\overrightarrow{OB}}{n+m}
\tkzDefBarycentricPoint(<A=n,B=m>) \tkzGetPoint{P}
定比分点(AP=kAB\overrightarrow{AP}=k\overrightarrow{AB}\tkzDefPointOnLine[pos=k](A,B)
重心坐标\tkzDefBarycentricPoint(<A=α1,B=α2,C=α3,...>) \tkzGetPoint{P}
内相似中心\tkzDefIntSimilitudeCenter(O1,r1)(O2,r2) \tkzGetPoint{I}
外相似中心\tkzExtSimilitudeCenter(O1,r1)(O2,r2) \tkzGetPoint{J}

定义几何变换点

命令:\tkzDefPointBy[<option>](P) \tkzGetPoint{Q}

批量变换:\tkzDefPointsBy[<option>](M,N,...){P,Q,...}

(如后面的为{},则缺省值为M',N',...

变换选项
平移translation=from A to B
位似homothety=center A ratio .5
反射(轴对称)reflection=over A--B
中心对称symmetry=center A
投影projection=onto A--B
旋转(角度)rotation=center O angle 30
旋转(弧度)rotation in rad=center O angle pi/3
反演inversion=center O through A

定义向量变换点

命令:\tkzDefPointWith[<options>](<A,B>) \tkzGetPoint{C}

变换描述选项
正交AC=KAB\overrightarrow{AC}=K\overrightarrow{AB}ACAB\overrightarrow{AC}\perp\overrightarrow{AB}orthogonal
单位正交AC=KAC=KACAB\overrightarrow{AC}\perp\overrightarrow{AB}orthogonal normed
共线AC=KAB\overrightarrow{AC}=K\overrightarrow{AB}linear
单位共线AC=KAC=KACAB\overrightarrow{AC}\parallel\overrightarrow{AB}linear normed
共线MC=KAB\overrightarrow{MC}=K\overrightarrow{AB}colinear=at M
单位共线MC=KMC=KMCAB\overrightarrow{MC}\parallel\overrightarrow{AB}colinear normed=at M
变换系数K默认为1(与前面的选项组合使用)K=1

获取向量的坐标:\tkzGetVectxy(<A,B>){<V>},则向量 AB\overrightarrow{AB} 的坐标为 (\Vx,\Vy).

定义三角形的各中心

命令:\tkzDefTriangleCenter[<option>](<A,B,C>) \tkzGetPoint{P}

ETC 编号名称描述选项
X(1)内心三条内角平分线的交点in
旁心(与B对应)两条外角平分线与一条内角平分线的交点ex
X(2)重心三条中线的交点centroid
X(3)外心三条垂直平分线的交点circum
X(4)垂心三条高的交点ortho
X(5)欧拉圆(九点圆)心三边的中点、三高的垂足、
顶点到垂心的三条线段的中点
所在圆的圆心
euler
X(6)类似重心(Lemoine点、莱莫恩点)重心的等角共轭点symmedian
X(7)Gergonne点(热尔岗点)内切点与对应顶点的三条连线的交点gergonne
X(8)Nagel点(奈格尔点)旁切点与对应顶点的三条连线的交点nagel
X(9)mittenpunkt点旁切点三角形的类似重心mittenpunkt
X(10)Spieker点(斯俾克心)中点三角形的内心spieker
X(11)费尔巴哈点内切圆与九点圆的切点feuerbach

定义随机点

命令:\tkzDefRandPointOn[<local option>] \tkzGetPoint{P}

位置选项
线段segment=A--B
直线line=A--B
矩形rectangle=A and B
圆(已知半径长度)circle=center A radius 2
圆(已知半径线段)circle through=center A through B
圆盘(已知半径线段)disk through=center A through B

获取点的方法

获取一个点:\tkzGetPoint{A},默认存储为 tkzPointResult

获取多个点:\tkzGetPoints{A}{B},默认存储为 tkzFirstPointResulttkzSecondPointResult

若只获取其中某一个,则可以使用 tkzGetFirstPoint{A}\tkzGetSecondPoint{B}

绘制点的方法

绘制单个点:\tkzDrawPoint[<options>](A)

绘制多个点:\tkzDrawPoints[<options>](A,B,C,...)

自定义点的样式:\tkzSetUpPoint[<options>]

样式选项
形状shape=circle(或 crosscross out
大小size=3
颜色color=black
填充fill=black!50

标记点的方法

标记单个点:\tkzLabelPoint[<options>](A){<text support tex>}

标记多个点:\tkzLabelPoints[<options>](A,B,C,...)

自动选择位置标记多个点:\tkzAutoLabelPoints[center=M, <options>](A,B,C,...)

描述选项
位置above/below + left/right
具体位置below right=3pt
字体大小font=\scriptsize
颜色color=black
]]>
@@ -108,7 +108,7 @@ 2020-06-22T12:28:22.000Z 2020-06-22T12:28:22.000Z - 剪裁文件
1
2
3
4
5
6
7
8
9
10
### 截取前一部分的视频
ffmpeg -t [duration] -i [input.mp4] -c copy [output.mp4]

### 截取后一部分视频
ffmpeg -ss [start] -i [input.mp4] -c copy [output.mp4]

### 截取中间一部分视频(结束时间确定)
ffmpeg -ss [start] -to [end] -i [input.mp4] -c copy [output.mp4]
### 或者(时长确定)
ffmpeg -ss [start] -t [duration] -i [input.mp4] -c copy [output.mp4]

时间格式:HH:MM:SS.XXX

这里面使用 -c copy 的选项,避免重新进行编码,可以很快地进行剪裁。

这里 -ss-to-t 的选项放在 -i 选项之前,时间不是很精确,可能有几秒的误差,但是可以避免黑屏的问题。在对时间精确度要求不高的情况下这是最好的方案。

如果放在 -i 选项之后,会对输入文件进行逐帧解码,时间会比较准确,但可能出现黑屏问题,速度也比较慢。

一种更加精确的剪裁方法是:

1
ffmpeg -ss [start] -t [duration] -accurate_seek -i [input.mp4] -avoid_negative_ts 1 -c copy [output.mp4]

注意 -accurate_seek 选项要在 -i 选项之前。

如果需要非常精确的剪裁的话,需要重新进行编码,并使用 -strict experimental 或者 -strict 2 的选项。

合并文件

先把要合并的文件写在一个文本文件 list.txt 里:

1
2
3
file './split1.mp4'
file './split2.mp4'
file './split3.mp4'

然后再进行合并:

1
ffmpeg -f concat -i [list.txt] -c copy [output.mp4]

改变格式

1
2
3
4
5
### 重新编码
ffmpeg -i [input].mp4 [output].flv

### 不重新编码
ffmpeg -i [input].mp4 -c copy [output].flv

提取音频

1
ffmpeg -i [intput].mp4 -c:a copy [output.aac]

合并视频和音频

1
ffmpeg -i [input.mp4] -i [input.aac] -c copy [output.mp4]
]]>
+ 剪裁文件
1
2
3
4
5
6
7
8
9
10
### 截取前一部分的视频
ffmpeg -t [duration] -i [input.mp4] -c copy [output.mp4]

### 截取后一部分视频
ffmpeg -ss [start] -i [input.mp4] -c copy [output.mp4]

### 截取中间一部分视频(结束时间确定)
ffmpeg -ss [start] -to [end] -i [input.mp4] -c copy [output.mp4]
### 或者(时长确定)
ffmpeg -ss [start] -t [duration] -i [input.mp4] -c copy [output.mp4]

时间格式:HH:MM:SS.XXX

这里面使用 -c copy 的选项,避免重新进行编码,可以很快地进行剪裁。

这里 -ss-to-t 的选项放在 -i 选项之前,时间不是很精确,可能有几秒的误差,但是可以避免黑屏的问题。在对时间精确度要求不高的情况下这是最好的方案。

如果放在 -i 选项之后,会对输入文件进行逐帧解码,时间会比较准确,但可能出现黑屏问题,速度也比较慢。

一种更加精确的剪裁方法是:

1
ffmpeg -ss [start] -t [duration] -accurate_seek -i [input.mp4] -avoid_negative_ts 1 -c copy [output.mp4]

注意 -accurate_seek 选项要在 -i 选项之前。

如果需要非常精确的剪裁的话,需要重新进行编码,并使用 -strict experimental 或者 -strict 2 的选项。

合并文件

先把要合并的文件写在一个文本文件 list.txt 里:

1
2
3
file './split1.mp4'
file './split2.mp4'
file './split3.mp4'

然后再进行合并:

1
ffmpeg -f concat -i [list.txt] -c copy [output.mp4]

改变格式

1
2
3
4
5
### 重新编码
ffmpeg -i [input].mp4 [output].flv

### 不重新编码
ffmpeg -i [input].mp4 -c copy [output].flv

提取音频

1
ffmpeg -i [intput].mp4 -c:a copy [output.aac]

合并视频和音频

1
ffmpeg -i [input.mp4] -i [input.aac] -c copy [output.mp4]
]]>
@@ -131,7 +131,7 @@ 2020-05-12T06:52:40.000Z 2020-05-18T05:26:40.000Z - 直接运行
  • winver: 关于 Windows
  • msinfo32:系统信息
  • msconfig: 系统配置实用程序
  • control: 控制面版
  • regedit: 注册表
  • perfmon:计算机性能监测器
  • dxdiag:检查 DirectX 信息
  • explorer:资源管理器 Win+E
  • taskmgr: 任务管理器 Win+X T
  • powershell: Windows PowerShell Win+X I
  • mspaint:画图
  • notepad:记事本

管理控制台

  • services.msc: 服务
  • gpedit.msc: 组策略
  • wf.msc: 高级安全 Windows Defender 防火墙
  • compmgmt.msc:计算机管理
  • diskmgmt.msc:磁盘管理 Win+X K
  • secpol.msc:本地安全策略

控制面板

  • hdwwiz.cpl:设备管理器 Win+X M
  • appwiz.cpl: 程序和功能(卸载)
  • firewall.cpl: Windows Defender 防火墙
  • main.cpl:鼠标属性
  • mmsys.cpl:声音
  • ncpa.cpl:网络连接(适配器)
  • powercfg.cpl:电源选项 Win+X O
]]>
+ 直接运行
  • winver: 关于 Windows
  • msinfo32:系统信息
  • msconfig: 系统配置实用程序
  • control: 控制面版
  • regedit: 注册表
  • perfmon:计算机性能监测器
  • dxdiag:检查 DirectX 信息
  • explorer:资源管理器 Win+E
  • taskmgr: 任务管理器 Win+X T
  • powershell: Windows PowerShell Win+X I
  • mspaint:画图
  • notepad:记事本

管理控制台

  • services.msc: 服务
  • gpedit.msc: 组策略
  • wf.msc: 高级安全 Windows Defender 防火墙
  • compmgmt.msc:计算机管理
  • diskmgmt.msc:磁盘管理 Win+X K
  • secpol.msc:本地安全策略

控制面板

  • hdwwiz.cpl:设备管理器 Win+X M
  • appwiz.cpl: 程序和功能(卸载)
  • firewall.cpl: Windows Defender 防火墙
  • main.cpl:鼠标属性
  • mmsys.cpl:声音
  • ncpa.cpl:网络连接(适配器)
  • powercfg.cpl:电源选项 Win+X O
]]>
@@ -154,7 +154,7 @@ 2020-05-01T05:26:42.000Z 2020-05-17T21:26:42.000Z - 由于之前的电脑 8G 的内存已经明显不够了。比如 chrome 开10+个网页,wsl2 一直开着或者更新了大软件(比如 texlive-fontextra),VSCode 打开一个大项目,都会造成内存告急。如果有两种情况同时出现的话,基本上直接崩溃了。chrome 的话崩溃了还好,再打开就可以了。wsl2 一但崩溃,特别是在 pacman 更新的时候,直接导致更新的数据库崩溃,还都手动修复。

如果开虚拟内存系统托管的话,系统倒是再加 8G 的虚拟内存,但是由于我的硬盘是机械硬盘,于是就会造成硬盘活动时间始终是100%,会造成响应变慢,甚至直接卡死。

于是我加了一块 500G 的固态硬盘,用的西数的蓝盘,然后把两个 4G 的内存条换成了两个 8G 的内存条,还把网卡换成了最新的 AX200(原先的网卡不支持 5GHz 的 WIFI)。

顺带请了一下风扇,换了散热硅脂。

以及拔插了一下摄像头的连接线,解决了之前摄像头时能用时不能用的问题。

因为之前的系统里的东西比较杂乱,于是我决定重新安装系统,而不是做系统迁移。

安装 windows 还是比较顺利的。这里建议不要用 Media Creation Tool,而是直接下载 iso 文件,这样下载的速度会快一些。(谁叫我有 IDM 呢 →_→)

安装之后,系统引导会自动生成,不用手动干预。

然而,主要耗费时间是在安装各种软件上。

Adobe

有请 vposy 大神。。。

Office 下载与激活

参见 https://v0v.bid

MathType 与字体冲突的问题

MathType 与 Microsoft Store 中的「更纱黑体」相冲突,安装「更纱黑体」会导致 MathType 闪退,原因不明。

但直接下载字体点击安装的话就没有问题。

这个问题折腾了我半天的时间。。。

重启电脑之后发现,手动安装也不行。。。
话说之前的系统里一直是两者共存没有问题啊。。。

又尝试单独安装部分字体,只装了 Sarasa Term,没有问题。那就先这么用吧。。。

盘符问题

在安装的时候,一定将新的系统盘标为 C 盘。如果系统安装完了之后,就没法再修改了。至少我目前还没有找到方法。

看过网上说的一些方法。如果直接在硬盘管理中修改盘符的话,非系统盘是可以直接修改的,系统盘修改的话会显示参数错误。

还有直接修改注册表中 HKEY_LOCAL_MACHINE\SYSTEM\MountedDevices 下的驱动器号的,我试了一下,然后电脑就无法启动了。还是通过安装盘恢复原来的设定之后才能启动。

又是一天的血和泪。。。

主要的原因是,之前安装 Windows 的时候偷懒了,直接加载 iso 文件安装的,没有制作安装 U 盘。然后修改注册表之后系统无法启动,只能进入到 Linux 下去制作 Windows 的启动盘。
直接使用 dd 的话,电脑不能识别 U 盘启动,试了好几个软件,最终使用 woeusb 才成功了。

其实大部分软件安装都没有问题,只是在「华为电脑管家」的时候出现了问题。
于是我只能把另外一个分区改为 C 盘,然后安装之后把 Program Files(x86) 中的文件移到 D 盘中,然后在注册表中搜索修改所有相关的项。
目前使用上还没有发现问题。

独显问题

之前电脑上,可以选择以 N 卡运行 chrome。但是这次安装之后,即使是选择 N 卡运行,包括在 Nvidia 控制面板里设置,还是右击选择以「高性能 Nvidia 处理器」运行,都没有作用。

Firefox 也不管用。

但是 mpv 和 qutebrwoser 都运行正常。

主要这么纠结的原因是,在打雀魂的时候,核显会飙到 80%,而且会有明显的卡顿。切换到 N 卡上话,核显 50%,独显 45%,但至少没有感觉的明显的卡顿了。
我就是想打个麻将而已,容易么我。。。
顺带说一下,笔记本是 14 年买的,CPU 是 i7-4700HQ,核显是 HD Graphic 4600,独显是 GeForce GTX 850M。

播放器选择

安装之后试了一下 4k 视频的播放,发现不需要修改就可以直接舒畅播放的就只有 vlc,而且仅仅使用核显,播放的时候 CPU 30%,核显 vlc 使用 5%,整体 20%,不知道是怎么调教的。

如果配置好的话,让 mpv 用 N 卡解码也是可以流畅播放的,核显 25%,独显 60%。

对不同应用切换不同的输入法

设置 -> 设备 -> 输入 -> 高级键盘设置 -> 切换输入法 -> 勾选「允许我为每个应用窗口使用不同的输入法」

杀毒软件

趁着这次机会,入正了 EAV。

Git

如果直接安装 Git For Windows 的话,就没有什么问题。
不过由于我安装了 MSYS2,因此就直接在 MSYS2 里面安装了,但这带来了一个奇怪的问题,那就是 git 的 ssh 协议无法使用。具体就是:如我运行

1
ssh -T git@github.com

没有问题,会正常的返回

1
Hi wangjiezhe! You've successfully authenticated, but GitHub does not provide shell access.

但是 git pullgit push 就是运行不成功,显示

1
2
3
4
5
git@github.com: Permission denied (publickey).
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.

后来发现,Git For Windows 貌似可以之间使用 Windows 默认的 ssh 配置文件(位置在 %HOMEPATH%\.ssh\),而在 MSYS2 里安装的话需要把密钥复制到 MSYS2 的 ssh 配置文件里。

WSL

在安装完 WSL 之后,我发现网络访问有问题,而且问题比较奇怪。

我在 WSL 中,能够正常访问网络;在 Windows 中,也能访问 WSL 中的网络;但是在 WSL 中,无法访问 Windows 应用,包括 VcXsrc。

问题已解决,是防火墙的问题。我之前只在「允许应用通过防火墙」中为 VcXsrv 允许了专用网络,把公用网络也勾选上就 OK 了。
其它的例如 python -m http.server,把 python.exe 加入到防火墙的入站规则里就可以了。
如果使用 Windows 默认的防火墙的话,推荐使用 Firewall App Blocker,可以很方便的添加防火墙规则。

]]>
+ 由于之前的电脑 8G 的内存已经明显不够了。比如 chrome 开10+个网页,wsl2 一直开着或者更新了大软件(比如 texlive-fontextra),VSCode 打开一个大项目,都会造成内存告急。如果有两种情况同时出现的话,基本上直接崩溃了。chrome 的话崩溃了还好,再打开就可以了。wsl2 一但崩溃,特别是在 pacman 更新的时候,直接导致更新的数据库崩溃,还都手动修复。

如果开虚拟内存系统托管的话,系统倒是再加 8G 的虚拟内存,但是由于我的硬盘是机械硬盘,于是就会造成硬盘活动时间始终是100%,会造成响应变慢,甚至直接卡死。

于是我加了一块 500G 的固态硬盘,用的西数的蓝盘,然后把两个 4G 的内存条换成了两个 8G 的内存条,还把网卡换成了最新的 AX200(原先的网卡不支持 5GHz 的 WIFI)。

顺带请了一下风扇,换了散热硅脂。

以及拔插了一下摄像头的连接线,解决了之前摄像头时能用时不能用的问题。

因为之前的系统里的东西比较杂乱,于是我决定重新安装系统,而不是做系统迁移。

安装 windows 还是比较顺利的。这里建议不要用 Media Creation Tool,而是直接下载 iso 文件,这样下载的速度会快一些。(谁叫我有 IDM 呢 →_→)

安装之后,系统引导会自动生成,不用手动干预。

然而,主要耗费时间是在安装各种软件上。

Adobe

有请 vposy 大神。。。

Office 下载与激活

参见 https://v0v.bid

MathType 与字体冲突的问题

MathType 与 Microsoft Store 中的「更纱黑体」相冲突,安装「更纱黑体」会导致 MathType 闪退,原因不明。

但直接下载字体点击安装的话就没有问题。

这个问题折腾了我半天的时间。。。

重启电脑之后发现,手动安装也不行。。。
话说之前的系统里一直是两者共存没有问题啊。。。

又尝试单独安装部分字体,只装了 Sarasa Term,没有问题。那就先这么用吧。。。

盘符问题

在安装的时候,一定将新的系统盘标为 C 盘。如果系统安装完了之后,就没法再修改了。至少我目前还没有找到方法。

看过网上说的一些方法。如果直接在硬盘管理中修改盘符的话,非系统盘是可以直接修改的,系统盘修改的话会显示参数错误。

还有直接修改注册表中 HKEY_LOCAL_MACHINE\SYSTEM\MountedDevices 下的驱动器号的,我试了一下,然后电脑就无法启动了。还是通过安装盘恢复原来的设定之后才能启动。

又是一天的血和泪。。。

主要的原因是,之前安装 Windows 的时候偷懒了,直接加载 iso 文件安装的,没有制作安装 U 盘。然后修改注册表之后系统无法启动,只能进入到 Linux 下去制作 Windows 的启动盘。
直接使用 dd 的话,电脑不能识别 U 盘启动,试了好几个软件,最终使用 woeusb 才成功了。

其实大部分软件安装都没有问题,只是在「华为电脑管家」的时候出现了问题。
于是我只能把另外一个分区改为 C 盘,然后安装之后把 Program Files(x86) 中的文件移到 D 盘中,然后在注册表中搜索修改所有相关的项。
目前使用上还没有发现问题。

独显问题

之前电脑上,可以选择以 N 卡运行 chrome。但是这次安装之后,即使是选择 N 卡运行,包括在 Nvidia 控制面板里设置,还是右击选择以「高性能 Nvidia 处理器」运行,都没有作用。

Firefox 也不管用。

但是 mpv 和 qutebrwoser 都运行正常。

主要这么纠结的原因是,在打雀魂的时候,核显会飙到 80%,而且会有明显的卡顿。切换到 N 卡上话,核显 50%,独显 45%,但至少没有感觉的明显的卡顿了。
我就是想打个麻将而已,容易么我。。。
顺带说一下,笔记本是 14 年买的,CPU 是 i7-4700HQ,核显是 HD Graphic 4600,独显是 GeForce GTX 850M。

播放器选择

安装之后试了一下 4k 视频的播放,发现不需要修改就可以直接舒畅播放的就只有 vlc,而且仅仅使用核显,播放的时候 CPU 30%,核显 vlc 使用 5%,整体 20%,不知道是怎么调教的。

如果配置好的话,让 mpv 用 N 卡解码也是可以流畅播放的,核显 25%,独显 60%。

对不同应用切换不同的输入法

设置 -> 设备 -> 输入 -> 高级键盘设置 -> 切换输入法 -> 勾选「允许我为每个应用窗口使用不同的输入法」

杀毒软件

趁着这次机会,入正了 EAV。

Git

如果直接安装 Git For Windows 的话,就没有什么问题。
不过由于我安装了 MSYS2,因此就直接在 MSYS2 里面安装了,但这带来了一个奇怪的问题,那就是 git 的 ssh 协议无法使用。具体就是:如我运行

1
ssh -T git@github.com

没有问题,会正常的返回

1
Hi wangjiezhe! You've successfully authenticated, but GitHub does not provide shell access.

但是 git pullgit push 就是运行不成功,显示

1
2
3
4
5
git@github.com: Permission denied (publickey).
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.

后来发现,Git For Windows 貌似可以之间使用 Windows 默认的 ssh 配置文件(位置在 %HOMEPATH%\.ssh\),而在 MSYS2 里安装的话需要把密钥复制到 MSYS2 的 ssh 配置文件里。

WSL

在安装完 WSL 之后,我发现网络访问有问题,而且问题比较奇怪。

我在 WSL 中,能够正常访问网络;在 Windows 中,也能访问 WSL 中的网络;但是在 WSL 中,无法访问 Windows 应用,包括 VcXsrc。

问题已解决,是防火墙的问题。我之前只在「允许应用通过防火墙」中为 VcXsrv 允许了专用网络,把公用网络也勾选上就 OK 了。
其它的例如 python -m http.server,把 python.exe 加入到防火墙的入站规则里就可以了。
如果使用 Windows 默认的防火墙的话,推荐使用 Firewall App Blocker,可以很方便的添加防火墙规则。

]]>
@@ -179,7 +179,7 @@ 2020-04-10T16:39:40.000Z 2020-05-14T02:53:40.000Z - 最近把 windows 更新到了 2004,切换到了 WSL 2 上。

安装 WSL 2

启用 WSL 和虚拟机控制平台功能(要求管理员权限):

1
2
3
dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart
wsl --set-default-version 2

之后重启电脑。

安装 Arch,参见 ArchWSL

WSL 2 相对于 WSL 1 的优缺点

优点:

  • 本地文件操作更快。之前编译一个 glibc,几个小时都没有编完
  • 解决了 sleep 的问题
  • 支持网络操作,例如 ping
  • 可以使用 docker

缺点:

  • 经常会爆内存,包括安装大软件、长时间运行等
  • 访问 Windows 主机上文件的速度变慢

语言设置

/etc/locale.conf 改为 LANG=zh_CN.UTF8

然后 source /etc/locale.conf

一个非常奇怪的事情是,如果把 LANG 设为 zh_CN.UTF-8,那么在 bash 下,windows 中的中文文件名显示为乱码,而 zsh 则显示正常。
但在默认的 LANG=en_US.UTF-8 下,bashzsh 都能正常显示中文文件名。

安装软件包

导入密钥(非常重要!!!)

1
2
# 初始化密钥环 && 验证主密钥 && 更新密钥
pacman-key --init && pacman-key --populate archlinux && pacman-key --refresh-keys

启用国内的镜像源

1
2
3
4
5
6
echo "Server = https://mirrors.aliyun.com/archlinux/\$repo/os/\$arch
Server = https://mirrors.tuna.tsinghua.edu.cn/archlinux/\$repo/os/\$arch
Server = https://mirrors.neusoft.edu.cn/archlinux/\$repo/os/\$arch
Server = https://mirrors.cqu.edu.cn/archlinux/\$repo/os/\$arch
Server = https://mirrors.sjtug.sjtu.edu.cn/archlinux/\$repo/os/\$arch
Server = https://mirrors.ustc.edu.cn/archlinux/\$repo/os/\$arch" > /etc/pacman.d/mirrorlist

添加 ArchlinuxCN 源

1
2
3
4
echo "
[archlinuxcn]
Server = https://mirrors.tuna.tsinghua.edu.cn/archlinuxcn/x86_64" >> /etc/pacman.conf
pacman -Sy && pacman -S archlinuxcn-keyring && pacman -S yaourt

这里坚持用 yaourt 的原因有两个,一是在 root 环境下使用不报错(主要是需要彩色显示),二是可以显示版本更新还是编译更新。

安装常用软件

先搭建好常用环境

1
2
pacman -Syu
pacman -S zsh git subversion lua openssh

安装 zinit(原 zplugin)

1
2
git clone https://github.com/zdharma/zinit.git ~/.zinit/bin
echo "source ~/.zinit/bin/zinit.zsh" > ~/.zshrc

不得不再次吐槽一下 git clone 的速度。。。

安装 powerlevel10k

1
echo "zinit ice depth=1; zinit light romkatv/powerlevel10k" >> ~/.zshrc

启用 zsh(终于有了一个好看的终端)

1
zsh

然后就可以导入之前的 .zshrc 了。

切换默认终端至 zsh

1
chsh -s /bin/zsh

安装 vim-plug

1
2
curl -fLo ~/.vim/autoload/plug.vim --create-dirs \
https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim

导入之前的 .vimrc 文件,并执行命令:

1
vim +PlugInstall +qall

安装常用软件

1
2
3
4
5
6
7
pacman -S base-devel which diffutils man openssh tree p7zip bc wget \
htop strace most \
yarn npm python-pip \
zathura-ps zathura-pdf-poppler \
feh imagemagick mediainfo ffmpeg \
opencc dos2unix jq net-tools bind-tools nload
yarn global add hexo-cli nali-cli http-server

安装花哨软件

1
pacman -S fd exa bat ripgrep percol

安装常用字体

1
pacman -S adobe-source-code-pro-fonts adobe-source-sans-pro-fonts adobe-source-serif-pro-fonts adobe-source-han-sans-cn-fonts adobe-source-han-serif-cn-fonts tex-gyre-fonts ttf-dejavu wqy-zenhei wqy-microhei ttf-sarasa-gothic

安装专业软件

1
2
3
pacman -S texlive-most
pacman -S texlive-langchinese biber asymptote qtikz \
sagemath jupyter

注意:安装 texlive-fontextra 会爆内存!!!
反正我的8G内存被爆了,16G没有问题)

安装 X 软件

1
pacman -S tk gvim

~/.zshrc 中添加:

1
2
export DISPLAY=$(awk '/nameserver / {print $2; exit}' /etc/resolve.conf 2>/dev/null):0.0
export LIBGL_ALWAYS_INDIRECT=1

注意对于 WSL 2,VcXsrv 启动时需要选中 Disable access control 的选项,或者加上 -ac 的参数。

添加新用户

1
2
3
4
groupadd AAA
useradd XXX -g AAA -G wheel -m -N
pacman -S sudo
echo "wheel ALL=(ALL) NOPASSWD: ALL" > /etc/sudoers.d/wheel

其实我一直是使用 root 账户,只有在需要 makepkg 的时候才切换到普通用户。

]]>
+ 最近把 windows 更新到了 2004,切换到了 WSL 2 上。

安装 WSL 2

启用 WSL 和虚拟机控制平台功能(要求管理员权限):

1
2
3
dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart
wsl --set-default-version 2

之后重启电脑。

安装 Arch,参见 ArchWSL

WSL 2 相对于 WSL 1 的优缺点

优点:

  • 本地文件操作更快。之前编译一个 glibc,几个小时都没有编完
  • 解决了 sleep 的问题
  • 支持网络操作,例如 ping
  • 可以使用 docker

缺点:

  • 经常会爆内存,包括安装大软件、长时间运行等
  • 访问 Windows 主机上文件的速度变慢

语言设置

/etc/locale.conf 改为 LANG=zh_CN.UTF8

然后 source /etc/locale.conf

一个非常奇怪的事情是,如果把 LANG 设为 zh_CN.UTF-8,那么在 bash 下,windows 中的中文文件名显示为乱码,而 zsh 则显示正常。
但在默认的 LANG=en_US.UTF-8 下,bashzsh 都能正常显示中文文件名。

安装软件包

导入密钥(非常重要!!!)

1
2
# 初始化密钥环 && 验证主密钥 && 更新密钥
pacman-key --init && pacman-key --populate archlinux && pacman-key --refresh-keys

启用国内的镜像源

1
2
3
4
5
6
echo "Server = https://mirrors.aliyun.com/archlinux/\$repo/os/\$arch
Server = https://mirrors.tuna.tsinghua.edu.cn/archlinux/\$repo/os/\$arch
Server = https://mirrors.neusoft.edu.cn/archlinux/\$repo/os/\$arch
Server = https://mirrors.cqu.edu.cn/archlinux/\$repo/os/\$arch
Server = https://mirrors.sjtug.sjtu.edu.cn/archlinux/\$repo/os/\$arch
Server = https://mirrors.ustc.edu.cn/archlinux/\$repo/os/\$arch" > /etc/pacman.d/mirrorlist

添加 ArchlinuxCN 源

1
2
3
4
echo "
[archlinuxcn]
Server = https://mirrors.tuna.tsinghua.edu.cn/archlinuxcn/x86_64" >> /etc/pacman.conf
pacman -Sy && pacman -S archlinuxcn-keyring && pacman -S yaourt

这里坚持用 yaourt 的原因有两个,一是在 root 环境下使用不报错(主要是需要彩色显示),二是可以显示版本更新还是编译更新。

安装常用软件

先搭建好常用环境

1
2
pacman -Syu
pacman -S zsh git subversion lua openssh

安装 zinit(原 zplugin)

1
2
git clone https://github.com/zdharma/zinit.git ~/.zinit/bin
echo "source ~/.zinit/bin/zinit.zsh" > ~/.zshrc

不得不再次吐槽一下 git clone 的速度。。。

安装 powerlevel10k

1
echo "zinit ice depth=1; zinit light romkatv/powerlevel10k" >> ~/.zshrc

启用 zsh(终于有了一个好看的终端)

1
zsh

然后就可以导入之前的 .zshrc 了。

切换默认终端至 zsh

1
chsh -s /bin/zsh

安装 vim-plug

1
2
curl -fLo ~/.vim/autoload/plug.vim --create-dirs \
https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim

导入之前的 .vimrc 文件,并执行命令:

1
vim +PlugInstall +qall

安装常用软件

1
2
3
4
5
6
7
pacman -S base-devel which diffutils man openssh tree p7zip bc wget \
htop strace most \
yarn npm python-pip \
zathura-ps zathura-pdf-poppler \
feh imagemagick mediainfo ffmpeg \
opencc dos2unix jq net-tools bind-tools nload
yarn global add hexo-cli nali-cli http-server

安装花哨软件

1
pacman -S fd exa bat ripgrep percol

安装常用字体

1
pacman -S adobe-source-code-pro-fonts adobe-source-sans-pro-fonts adobe-source-serif-pro-fonts adobe-source-han-sans-cn-fonts adobe-source-han-serif-cn-fonts tex-gyre-fonts ttf-dejavu wqy-zenhei wqy-microhei ttf-sarasa-gothic

安装专业软件

1
2
3
pacman -S texlive-most
pacman -S texlive-langchinese biber asymptote qtikz \
sagemath jupyter

注意:安装 texlive-fontextra 会爆内存!!!
反正我的8G内存被爆了,16G没有问题)

安装 X 软件

1
pacman -S tk gvim

~/.zshrc 中添加:

1
2
export DISPLAY=$(awk '/nameserver / {print $2; exit}' /etc/resolve.conf 2>/dev/null):0.0
export LIBGL_ALWAYS_INDIRECT=1

注意对于 WSL 2,VcXsrv 启动时需要选中 Disable access control 的选项,或者加上 -ac 的参数。

添加新用户

1
2
3
4
groupadd AAA
useradd XXX -g AAA -G wheel -m -N
pacman -S sudo
echo "wheel ALL=(ALL) NOPASSWD: ALL" > /etc/sudoers.d/wheel

其实我一直是使用 root 账户,只有在需要 makepkg 的时候才切换到普通用户。

]]>
@@ -204,7 +204,7 @@ 2020-04-07T08:36:08.000Z 2020-04-07T15:15:00.000Z - 在前面的三篇文章中,我们探究了和正方形有关的中点问题.在本文中,我们来看一个和梯形有关的中点问题.

和梯形相关的中点问题,主要可以分为「底中点」和「腰中点」两大类.对于「底中点」相关的问题,我们合并到下一篇关于一般四边形的中点问题的文章中一起来讨论.今天我们重点来看一下和「腰中点」有关的问题.

「腰中点」的处理方法

对于「腰中点」相关的问题,主要的思路有两个:「倍长中线」和构造「中位线」.

是不是很熟悉?和前面正方形的处理方法是一样的.

倍长中线

图1EE 是腰 CDCD 的中点,连结 AEAE 并延长交 BCBCFF,则有 ADEFCE\triangle ADE \cong \triangle FCE,于是 EE 也是 AFAF 的中点,AD=CFAD = CF

这个方法相当于是 ADE\triangle ADE 旋转到了 FCE\triangle FCE,于是把原来的梯形变成了一个三角形.

这个方法同时可以用来证明梯形的中位线定理.

图1

梯形的中位线

图2EE 是腰 CDCD 的中点,取 ADAD 的中点 FF,则 EFEF 是梯形 ABCDABCD 的中位线,于是 EFABCDEF \parallel AB \parallel CD,且 EF=12(AB+CD)EF = \dfrac{1}{2} (AB + CD)

图2

直角梯形的「腰中点」

图3,对于直角梯形 ABCDABCDA=D=90\angle A = \angle D = 90^\circ,取腰 BCBC 的中点 EE,则 EA=EDEA = ED,即 AED\triangle AED 是等腰三角形.

图3

用上面两种方法,都很容易证明这个命题.

一种特殊情况

如果在图3中加入 AEDEAE \perp DE,也就是 AED\triangle AED 是等腰直角三角形的条件,那么 AB+CD=ADAB + CD = AD

图4

如果用第1种方法,如图5,则 DEDE 垂直平分 AFAFADF\triangle ADF 是等腰直角三角形,

AD=DF=DC+CF=DC+AB\begin{aligned} AD &= DF\\ &= DC + CF \\ &= DC + AB\end{aligned}

图5

如果用第2种方法,如图6,则

AD=2EF=AB+CDAD = 2EF = AB + CD

图6

如果我们在 ADAD 上取 AM=DCAM = DC,则 DM=ABDM = ABBAMMDC\triangle BAM \cong \triangle MDC,于是 MBC\triangle MBC 是等腰直角三角形.

图7

如果再考虑 AEAEBMBM 的交点 PPDEDECMCM 的交点 QQ,则有 PQCDPQ \perp CDBP=MQBP = MQMP=CQMP = CQ

图8

因为 PMQ=PEQ=90\angle PMQ = \angle PEQ = 90^\circ,所以 EPMQEPMQ 四点共圆, EPQ=EMQ=45=EAD\angle EPQ = \angle EMQ = 45^\circ = \angle EAD,故 PQQDPQ \parallel QD,于是有 PQCDPQ \perp CD

PQQDPQ \parallel QD 我们还可以得到 AP=DQAP = DQ,于是 ABPDMQ\triangle ABP \cong DMQ,故 BP=MQBP = MQMP=CQMP = CQ

事实上,在这个图中,

ABPDMQAMPDCQBPEMQEPMEQCE\begin{aligned}\triangle ABP &\cong \triangle DMQ \\\triangle AMP &\cong \triangle DCQ \\\triangle BPE &\cong \triangle MQE \\\triangle PME &\cong \triangle QCE\end{aligned}

于是

SABEM=SDCEMS_{ABEM} = S_{DCEM}

如果考虑四点共圆的话,有 ABEMABEMDCEMDCEMEPMQEPMQ 三组四点共圆,而且这三个圆有公共弦 EMEM

图9

图形的来源

如果我们仔细观察一下图7,我们就会发现,这个图实际上是「弦图」的一半.

图10

如果再考虑 PQPQ,那么这个图就相当于嵌套的两个弦图,于是图8中的结论就显然成立了.

图11

变形

如果我们只考虑 MBC\triangle MBC,那么就变成了这样一道题:

图12,在等腰 RtMBC\mathrm{Rt} \triangle MBC 中,EE 是斜边 BCBC 的中点,MP=CQMP = CQ,则 EPQ\triangle EPQ 是等腰直角三角形.

图12

利用图8中的 PMEQCE\triangle PME \cong \triangle QCE,这个结论显然是成立的.

推广一

如果我们保留 MB=MCMB = MC 的条件(即 MEBCME \perp BC),如图13,那么这个时候仍有 AED=BMC\angle AED = \angle BMC 的结论成立.

图13

注意到这个时候 ABEMABEMDCEMDCEM 这两组四点共圆依旧成立,于是

BMC=BME+CME=BAE+CDE=AED\begin{aligned} \angle BMC &= \angle BME + \angle CME \\ &= \angle BAE + \angle CDE \\ &= \angle AED\end{aligned}

或者

BMC=180MBEMCE=180MAEMDE=AED\begin{aligned} \angle BMC &= 180^\circ - \angle MBE - \angle MCE \\ &= 180^\circ - \angle MAE - \angle MDE \\ &= \angle AED\end{aligned}

图14

事实上,对于一般的梯形 ABCDABCDABCDAB \parallel CD,过 BBCCADAD 上一点 MMMDC\triangle MDC 的外接圆交 BCBCNN,则有 AND=BMC\angle AND = \angle BMC

图15

注意到

BAM=180MDC=MNC\begin{aligned} \angle BAM &= 180^\circ - \angle MDC \\ &= \angle MNC\end{aligned}

因此上面 ABNMABNM 四点也共圆.

剩下的证明和图14是完全一样的,只需要把式子中的 EE 点换成 NN 点就可以.

推广二

如果我们保留 BMC=AND=90\angle BMC = \angle AND = 90^\circ 的条件,过 BBCCADAD 上一点 MMMDC\triangle MDC 的外接圆交 BCBCNN,作 AND\triangle AND 的外接圆与 BCBC 的另一个交点 PP,则 APBMAP \perp BMDPCMDP \perp CM

图16

证明中还用到上面推出的 ABNMABNM 四点共圆的结论:

DPN=DAN=MBNAPB=ADN=MCN\begin{aligned} \angle DPN &= \angle DAN = \angle MBN \\ \angle APB &= \angle ADN = \angle MCN\end{aligned}

图17

于是 DPBMDP \parallel BMAPCMAP \parallel CM,故 APBMAP \perp BMDPCMDP \perp CM

类似地,如果作 MBC\triangle MBC 的外接圆与 BCBC 交于 NN,与 ADAD 的另一个交点是 QQ,则有 ANBQAN \perp BQDNCQDN \perp CQ

图18

证明的方法和上面相同:

ANB=AMB=QCBAQB=MCB=MDN\begin{aligned} \angle ANB &= \angle AMB = \angle QCB \\ \angle AQB &= \angle MCB = \angle MDN\end{aligned}

于是 DNBQDN \parallel BQANCQAN \parallel CQ,故 ANBQAN \perp BQDNCQDN \perp CQ

图19

事实上,对于一般的梯形 ABCDABCDABCDAB \parallel CD,如果过 BBCCADAD 上一点 MMMDC\triangle MDC 的外接圆交 BCBCNN,作 AND\triangle AND 的外接圆与 BCBC 的另一个交点 PP,那么依然有 DPBMDP \parallel BMAPCMAP \parallel CM 的结论成立.证明过程和前面完全相同.

图20

变形

我们把图20简化一下,就可以得到下面这个题目:

图21,在梯形 ABCDABCD 中,ABCDAB \parallel CD,任取 ADAD 上一点 MM,作 APCMAP \parallel CMBCBCPP,则 DPBMDP \parallel BM

图21

这就变成了一个简单的平行线分线段成比例的题目.

我们不妨设 DADACBCB 的延长线交于 KK,则

ABCD    KAKD=KBKCAPCM    KAKM=KPKC\begin{aligned} AB \parallel CD &\implies \frac{KA}{KD} = \frac{KB}{KC} \\ \\ AP \parallel CM &\implies \frac{KA}{KM} = \frac{KP}{KC}\end{aligned}

两式相除,可得

KMKD=KBKP    BMDP\frac{KM}{KD} = \frac{KB}{KP} \implies BM \parallel DP

图22

]]>
+ 在前面的三篇文章中,我们探究了和正方形有关的中点问题.在本文中,我们来看一个和梯形有关的中点问题.

和梯形相关的中点问题,主要可以分为「底中点」和「腰中点」两大类.对于「底中点」相关的问题,我们合并到下一篇关于一般四边形的中点问题的文章中一起来讨论.今天我们重点来看一下和「腰中点」有关的问题.

「腰中点」的处理方法

对于「腰中点」相关的问题,主要的思路有两个:「倍长中线」和构造「中位线」.

是不是很熟悉?和前面正方形的处理方法是一样的.

倍长中线

图1EE 是腰 CDCD 的中点,连结 AEAE 并延长交 BCBCFF,则有 ADEFCE\triangle ADE \cong \triangle FCE,于是 EE 也是 AFAF 的中点,AD=CFAD = CF

这个方法相当于是 ADE\triangle ADE 旋转到了 FCE\triangle FCE,于是把原来的梯形变成了一个三角形.

这个方法同时可以用来证明梯形的中位线定理.

图1

梯形的中位线

图2EE 是腰 CDCD 的中点,取 ADAD 的中点 FF,则 EFEF 是梯形 ABCDABCD 的中位线,于是 EFABCDEF \parallel AB \parallel CD,且 EF=12(AB+CD)EF = \dfrac{1}{2} (AB + CD)

图2

直角梯形的「腰中点」

图3,对于直角梯形 ABCDABCDA=D=90\angle A = \angle D = 90^\circ,取腰 BCBC 的中点 EE,则 EA=EDEA = ED,即 AED\triangle AED 是等腰三角形.

图3

用上面两种方法,都很容易证明这个命题.

一种特殊情况

如果在图3中加入 AEDEAE \perp DE,也就是 AED\triangle AED 是等腰直角三角形的条件,那么 AB+CD=ADAB + CD = AD

图4

如果用第1种方法,如图5,则 DEDE 垂直平分 AFAFADF\triangle ADF 是等腰直角三角形,

AD=DF=DC+CF=DC+AB\begin{aligned} AD &= DF\\ &= DC + CF \\ &= DC + AB\end{aligned}

图5

如果用第2种方法,如图6,则

AD=2EF=AB+CDAD = 2EF = AB + CD

图6

如果我们在 ADAD 上取 AM=DCAM = DC,则 DM=ABDM = ABBAMMDC\triangle BAM \cong \triangle MDC,于是 MBC\triangle MBC 是等腰直角三角形.

图7

如果再考虑 AEAEBMBM 的交点 PPDEDECMCM 的交点 QQ,则有 PQCDPQ \perp CDBP=MQBP = MQMP=CQMP = CQ

图8

因为 PMQ=PEQ=90\angle PMQ = \angle PEQ = 90^\circ,所以 EPMQEPMQ 四点共圆, EPQ=EMQ=45=EAD\angle EPQ = \angle EMQ = 45^\circ = \angle EAD,故 PQQDPQ \parallel QD,于是有 PQCDPQ \perp CD

PQQDPQ \parallel QD 我们还可以得到 AP=DQAP = DQ,于是 ABPDMQ\triangle ABP \cong DMQ,故 BP=MQBP = MQMP=CQMP = CQ

事实上,在这个图中,

ABPDMQAMPDCQBPEMQEPMEQCE\begin{aligned}\triangle ABP &\cong \triangle DMQ \\\triangle AMP &\cong \triangle DCQ \\\triangle BPE &\cong \triangle MQE \\\triangle PME &\cong \triangle QCE\end{aligned}

于是

SABEM=SDCEMS_{ABEM} = S_{DCEM}

如果考虑四点共圆的话,有 ABEMABEMDCEMDCEMEPMQEPMQ 三组四点共圆,而且这三个圆有公共弦 EMEM

图9

图形的来源

如果我们仔细观察一下图7,我们就会发现,这个图实际上是「弦图」的一半.

图10

如果再考虑 PQPQ,那么这个图就相当于嵌套的两个弦图,于是图8中的结论就显然成立了.

图11

变形

如果我们只考虑 MBC\triangle MBC,那么就变成了这样一道题:

图12,在等腰 RtMBC\mathrm{Rt} \triangle MBC 中,EE 是斜边 BCBC 的中点,MP=CQMP = CQ,则 EPQ\triangle EPQ 是等腰直角三角形.

图12

利用图8中的 PMEQCE\triangle PME \cong \triangle QCE,这个结论显然是成立的.

推广一

如果我们保留 MB=MCMB = MC 的条件(即 MEBCME \perp BC),如图13,那么这个时候仍有 AED=BMC\angle AED = \angle BMC 的结论成立.

图13

注意到这个时候 ABEMABEMDCEMDCEM 这两组四点共圆依旧成立,于是

BMC=BME+CME=BAE+CDE=AED\begin{aligned} \angle BMC &= \angle BME + \angle CME \\ &= \angle BAE + \angle CDE \\ &= \angle AED\end{aligned}

或者

BMC=180MBEMCE=180MAEMDE=AED\begin{aligned} \angle BMC &= 180^\circ - \angle MBE - \angle MCE \\ &= 180^\circ - \angle MAE - \angle MDE \\ &= \angle AED\end{aligned}

图14

事实上,对于一般的梯形 ABCDABCDABCDAB \parallel CD,过 BBCCADAD 上一点 MMMDC\triangle MDC 的外接圆交 BCBCNN,则有 AND=BMC\angle AND = \angle BMC

图15

注意到

BAM=180MDC=MNC\begin{aligned} \angle BAM &= 180^\circ - \angle MDC \\ &= \angle MNC\end{aligned}

因此上面 ABNMABNM 四点也共圆.

剩下的证明和图14是完全一样的,只需要把式子中的 EE 点换成 NN 点就可以.

推广二

如果我们保留 BMC=AND=90\angle BMC = \angle AND = 90^\circ 的条件,过 BBCCADAD 上一点 MMMDC\triangle MDC 的外接圆交 BCBCNN,作 AND\triangle AND 的外接圆与 BCBC 的另一个交点 PP,则 APBMAP \perp BMDPCMDP \perp CM

图16

证明中还用到上面推出的 ABNMABNM 四点共圆的结论:

DPN=DAN=MBNAPB=ADN=MCN\begin{aligned} \angle DPN &= \angle DAN = \angle MBN \\ \angle APB &= \angle ADN = \angle MCN\end{aligned}

图17

于是 DPBMDP \parallel BMAPCMAP \parallel CM,故 APBMAP \perp BMDPCMDP \perp CM

类似地,如果作 MBC\triangle MBC 的外接圆与 BCBC 交于 NN,与 ADAD 的另一个交点是 QQ,则有 ANBQAN \perp BQDNCQDN \perp CQ

图18

证明的方法和上面相同:

ANB=AMB=QCBAQB=MCB=MDN\begin{aligned} \angle ANB &= \angle AMB = \angle QCB \\ \angle AQB &= \angle MCB = \angle MDN\end{aligned}

于是 DNBQDN \parallel BQANCQAN \parallel CQ,故 ANBQAN \perp BQDNCQDN \perp CQ

图19

事实上,对于一般的梯形 ABCDABCDABCDAB \parallel CD,如果过 BBCCADAD 上一点 MMMDC\triangle MDC 的外接圆交 BCBCNN,作 AND\triangle AND 的外接圆与 BCBC 的另一个交点 PP,那么依然有 DPBMDP \parallel BMAPCMAP \parallel CM 的结论成立.证明过程和前面完全相同.

图20

变形

我们把图20简化一下,就可以得到下面这个题目:

图21,在梯形 ABCDABCD 中,ABCDAB \parallel CD,任取 ADAD 上一点 MM,作 APCMAP \parallel CMBCBCPP,则 DPBMDP \parallel BM

图21

这就变成了一个简单的平行线分线段成比例的题目.

我们不妨设 DADACBCB 的延长线交于 KK,则

ABCD    KAKD=KBKCAPCM    KAKM=KPKC\begin{aligned} AB \parallel CD &\implies \frac{KA}{KD} = \frac{KB}{KC} \\ \\ AP \parallel CM &\implies \frac{KA}{KM} = \frac{KP}{KC}\end{aligned}

两式相除,可得

KMKD=KBKP    BMDP\frac{KM}{KD} = \frac{KB}{KP} \implies BM \parallel DP

图22

]]>
@@ -231,7 +231,7 @@ 2020-04-03T06:28:07.000Z 2020-04-03T06:28:07.000Z - 在上一篇文章的最后,我们留了一个问题,就是如果仅保留等腰的条件,是否还有比较好的结论?

要解决这个问题,我们先从一种特殊情况谈起.

一种特殊情况

当两个等腰 RtABD\mathrm{Rt} \triangle ABDACF\triangle ACF 旋转的时候,一种非常特殊的情况就是两个三角形的斜边共线的情况,如图1

图1

这个时候上面的结论依旧成立,而且我们注意到这个时候 BAC=90\angle BAC = 90^\circ,因此如果我们取 BCBC 的中点 QQ,则有 QA=12BC=QPQA = \dfrac{1}{2} BC = QP,也就是说 APQ\triangle APQ 是一个等腰三角形.

熟悉四点共圆的朋友马上就会想到,这里面 ABCPABCP 四点共圆,圆心恰好就是 QQ

图2

逆命题

那我们反过来想一下,如果取 ABC\triangle ABC 的外接圆和 DFDF 交于 PP,那么 PP 点是否一定是 DFDF 的中点?

图3

如果考虑同一法的话,很明显这个结论是成立的.

那如果不用同一法呢?

构造梯形的中位线

一种方法是构造梯形的中位线.我们分别过 BBCCQQDFDF 的垂线,垂足依次为 MMNNTT,则 CTCT 是梯形 BMNCBMNC 的中位线,且 MMNNTT 分别是 ADADAFAFAPAP 的中点,于是

PD=2MT=2NT=2(ANAT)=AFAP=PF\begin{aligned} PD &= 2MT = 2NT = 2 \left( AN - AT \right) \\ &= AF - AP = PF\end{aligned}

因此 PPDFDF 的中点.

图4

另一种方法是构造旋转相似,这种方法放到我们后面的推广里来讲.

一种推广

如果要保持四点共圆的条件不变,我们可以把条件弱化成什么样子?

注意如果要保持四点共圆的话,我们要保持 BAC=90\angle BAC = 90^\circ,因此两个等腰三角形的两底角要保持互余,也就是两顶角要保持互补.

因此,我们可以把两个等腰直角三角形的条件改为,两个「顶角互补的等腰三角形」:

图5

图5中,AB=BDAB = BDAC=CFAC = CFABD+ACF=180\angle ABD + \angle ACF = 180^\circ,我们分别取 BCBCDFDF 的中点 PPQQ,则 BPC=90\angle BPC = 90^\circ,且 AQ=QPAQ = QP

我们可以利用上一篇文章中的三种方法,对这种情况进行证明.因为方法几乎是一样的,这里就从略了.

继续推广

我们回顾一下图4的证明,这种方法本质上就是用了三个等腰 ABD\triangle ABDACF\triangle ACFAPQ\triangle APQ 的条件,因此我们可以把条件再进行弱化,如下图:

图6

图6ABD\triangle ABDACF\triangle ACF 都是等腰三角形,AB=BDAB = BDAC=CFAC = CFQQBCBC 的中点,则

QA=QPPD=PFQA = QP \Longleftrightarrow PD = PF

我们来想一下,前面的那些方法,是否还成立?

同时,大家可以想一下,这个图形和我们上一篇文章中里的图形有什么区别和联系.

倍长中线

这个时候,倍长中线的方法依旧可以使用,不过这个时候,应该要倍长 AQAQ

图7

为了两个全等三角形看着大一些,我调整了两个等腰三角形的角度,但这不影响我们的证明

图7,倍长 AQAQKK,可以证明 DBKKCF\triangle DBK \cong \triangle KCF

证明这个全等的关键,是要证明 DBK=KCF\angle DBK = \angle KCF.为了叙述方便,我们设 DBA=2α\angle DBA = 2\alphaACF=2β\angle ACF = 2\beta,则 BAC=α+β\angle BAC = \alpha + \betaABK=ACK=180αβ\angle ABK = \angle ACK = 180^\circ - \alpha - \beta,于是

DBK=DBA+ABK=2α+(180αβ)=180+αβKCF=360ACFACK=3602β(180αβ)=180+αβ\begin{aligned} \angle DBK &= \angle DBA + \angle ABK \\ &= 2\alpha + (180^\circ - \alpha - \beta) \\ &= 180^\circ + \alpha - \beta \\ \\ \angle KCF &= 360^\circ - \angle ACF - \angle ACK \\ &= 360^\circ - 2\beta - (180^\circ - \alpha - \beta) \\ &= 180^\circ + \alpha - \beta\end{aligned}

DBK=KCF\angle DBK = \angle KCF

有了全等之后,我们就有 KD=KFKD = KF

如果已知 PPDFDF 的中点,由「三线合一」可知 KPDFKP \perp DF,即 KPA\triangle KPA 是直角三角形,KQKQ 是其斜边中线,于是

PQ=12AK=AQPQ = \dfrac{1}{2} AK = AQ

如果已知 QA=QPQA = QP,由 QK=QA=QPQK = QA = QP 可知 KPA=90\angle KPA = 90^\circ,再由「三线合一」可知 PD=PFPD = PF

构造三角形的中位线

这个时候我们没有办法利用中位线直接证明 QA=QPQA = QP,但是我们可以分别取 ADADAFAF 的中点 MMNN,先证明 QM=QNQM= QN

图8

我们分别取 ABABACAC 的中点 SSTT,于是可以证明 MSQQTN\triangle MSQ \cong \triangle QTN.其中 MSQ=QTN\angle MSQ = \angle QTN 的证明和上一个方法类似.

于是接下来,只需要证明 QAMQPN\triangle QAM \cong \triangle QPN 即可(或者过 QQAPAP 的垂线,利用三线合一来做).

PD=PF    AM=12AD=12(DFAF)=PFNF=PN    SASQA=QP    AAS\begin{aligned} PD = PF &\implies AM = \frac{1}{2} AD \\ &= \frac{1}{2}(DF - AF) \\ &= PF - NF = PN \\ &\implies \mathrm{SAS} \\ \\ QA = QP &\implies \mathrm{AAS}\end{aligned}

两种方法的联系

实际上,如果我们把上一种方法的图和这一种方法的图放在一起,就会发现这两组三角形其实是相似的.

图9

构造梯形的中位线

这种方法和图4的证明是一样的,这里就不在重复了.

可以看出,这是最简单的一种证明方法.

构造旋转相似

这个图还有一个证明方法,就是构造 AA 关于 BCBC 的对称点 SS,如图10,则

SBD=2SAD=2(180SAF)=SCF\begin{aligned} \angle SBD &= 2\angle SAD \\ &= 2\left( 180^\circ - \angle SAF \right) \\ &= \angle SCF\end{aligned}

于是 SBDSCF\triangle SBD \sim \triangle SCF,这是一组旋转相似.

图10

如果已知 PPDFDF 的中点,那么就有 SBDSQPSCF\triangle SBD \sim \triangle SQP \sim \triangle SCF,因此 AQ=SQ=PQAQ = SQ = PQ

具体的推导过程如下:

SBDSCF    SBCSDF    SBQSDP    SBDSQP\begin{aligned} & \triangle SBD \sim \triangle SCF \\ \implies & \triangle SBC \sim \triangle SDF \\ \implies & \triangle SBQ \sim \triangle SDP \\ \implies & \triangle SBD \sim \triangle SQP\end{aligned}

如果已知 QA=QPQA = QP,那么

SBD=2SAD=2(180SAP)=SQP\begin{aligned} \angle SBD &= 2\angle SAD \\ &= 2\left( 180^\circ - \angle SAP \right) \\ &= \angle SQP\end{aligned}

于是 SBDSPQ\triangle SBD \sim \triangle SPQ.由于 QQBCBC 中点,所以 PPDFDF 的中点.

具体的推导过程如下:

SBDSCF    SBCSDFSBDSQP    SBQSDP}        BCDF=SBSD=BQDP\begin{aligned} &\left. \begin{array}{r} \triangle SBD \sim \triangle SCF \\ \implies \triangle SBC \sim \triangle SDF \\ \\ \triangle SBD \sim \triangle SQP \\ \implies \triangle SBQ \sim \triangle SDP \end{array} \right\} \\ \\ & \;\;\implies \frac{BC}{DF} = \frac{SB}{SD} = \frac{BQ}{DP}\end{aligned}

因此

DPDF=BQBP=12\frac{DP}{DF} = \frac{BQ}{BP} = \frac{1}{2}

PPDFDF 的中点.

图11

这种方法大量用到了相似和圆周角的性质,由此又可以引申出关于双圆问题的一些结论.有兴趣的朋友可以自行探究一下.

和前文图形的关系

我们回过头来看一下图8,注意在这个图中我们平没有用到 DDFF 这两个点,因此我们考虑把这两个点去掉,于是这个图就变成了下面这样:

图12

图12AMB\triangle AMBANC\triangle ANC 都是直角三角形,且 MMAANN 共线,取 BCBC 的中点 QQ,则 QM=QNQM = QN

对比一下我们前面那篇文章中的图11,那个图的条件实际上两个直角三角形加上 MAB=CAN\angle MAB = \angle CAN,而图12中则加上 MMAANN 共线,两个条件不同,结论却是相同的.


至此,这个模型的讨论就暂时告一段落.我们在这三篇文章中,系统地讨论了和两个正方形相关的中点问题,以及他们的推广和变形.我们看到,解决这类问题的关键点在于处理好「中点」的条件.我们需要熟练地掌握「倍长中线」和「中位线」的技巧,才能够顺利地解决这些问题.

]]>
+ 在上一篇文章的最后,我们留了一个问题,就是如果仅保留等腰的条件,是否还有比较好的结论?

要解决这个问题,我们先从一种特殊情况谈起.

一种特殊情况

当两个等腰 RtABD\mathrm{Rt} \triangle ABDACF\triangle ACF 旋转的时候,一种非常特殊的情况就是两个三角形的斜边共线的情况,如图1

图1

这个时候上面的结论依旧成立,而且我们注意到这个时候 BAC=90\angle BAC = 90^\circ,因此如果我们取 BCBC 的中点 QQ,则有 QA=12BC=QPQA = \dfrac{1}{2} BC = QP,也就是说 APQ\triangle APQ 是一个等腰三角形.

熟悉四点共圆的朋友马上就会想到,这里面 ABCPABCP 四点共圆,圆心恰好就是 QQ

图2

逆命题

那我们反过来想一下,如果取 ABC\triangle ABC 的外接圆和 DFDF 交于 PP,那么 PP 点是否一定是 DFDF 的中点?

图3

如果考虑同一法的话,很明显这个结论是成立的.

那如果不用同一法呢?

构造梯形的中位线

一种方法是构造梯形的中位线.我们分别过 BBCCQQDFDF 的垂线,垂足依次为 MMNNTT,则 CTCT 是梯形 BMNCBMNC 的中位线,且 MMNNTT 分别是 ADADAFAFAPAP 的中点,于是

PD=2MT=2NT=2(ANAT)=AFAP=PF\begin{aligned} PD &= 2MT = 2NT = 2 \left( AN - AT \right) \\ &= AF - AP = PF\end{aligned}

因此 PPDFDF 的中点.

图4

另一种方法是构造旋转相似,这种方法放到我们后面的推广里来讲.

一种推广

如果要保持四点共圆的条件不变,我们可以把条件弱化成什么样子?

注意如果要保持四点共圆的话,我们要保持 BAC=90\angle BAC = 90^\circ,因此两个等腰三角形的两底角要保持互余,也就是两顶角要保持互补.

因此,我们可以把两个等腰直角三角形的条件改为,两个「顶角互补的等腰三角形」:

图5

图5中,AB=BDAB = BDAC=CFAC = CFABD+ACF=180\angle ABD + \angle ACF = 180^\circ,我们分别取 BCBCDFDF 的中点 PPQQ,则 BPC=90\angle BPC = 90^\circ,且 AQ=QPAQ = QP

我们可以利用上一篇文章中的三种方法,对这种情况进行证明.因为方法几乎是一样的,这里就从略了.

继续推广

我们回顾一下图4的证明,这种方法本质上就是用了三个等腰 ABD\triangle ABDACF\triangle ACFAPQ\triangle APQ 的条件,因此我们可以把条件再进行弱化,如下图:

图6

图6ABD\triangle ABDACF\triangle ACF 都是等腰三角形,AB=BDAB = BDAC=CFAC = CFQQBCBC 的中点,则

QA=QPPD=PFQA = QP \Longleftrightarrow PD = PF

我们来想一下,前面的那些方法,是否还成立?

同时,大家可以想一下,这个图形和我们上一篇文章中里的图形有什么区别和联系.

倍长中线

这个时候,倍长中线的方法依旧可以使用,不过这个时候,应该要倍长 AQAQ

图7

为了两个全等三角形看着大一些,我调整了两个等腰三角形的角度,但这不影响我们的证明

图7,倍长 AQAQKK,可以证明 DBKKCF\triangle DBK \cong \triangle KCF

证明这个全等的关键,是要证明 DBK=KCF\angle DBK = \angle KCF.为了叙述方便,我们设 DBA=2α\angle DBA = 2\alphaACF=2β\angle ACF = 2\beta,则 BAC=α+β\angle BAC = \alpha + \betaABK=ACK=180αβ\angle ABK = \angle ACK = 180^\circ - \alpha - \beta,于是

DBK=DBA+ABK=2α+(180αβ)=180+αβKCF=360ACFACK=3602β(180αβ)=180+αβ\begin{aligned} \angle DBK &= \angle DBA + \angle ABK \\ &= 2\alpha + (180^\circ - \alpha - \beta) \\ &= 180^\circ + \alpha - \beta \\ \\ \angle KCF &= 360^\circ - \angle ACF - \angle ACK \\ &= 360^\circ - 2\beta - (180^\circ - \alpha - \beta) \\ &= 180^\circ + \alpha - \beta\end{aligned}

DBK=KCF\angle DBK = \angle KCF

有了全等之后,我们就有 KD=KFKD = KF

如果已知 PPDFDF 的中点,由「三线合一」可知 KPDFKP \perp DF,即 KPA\triangle KPA 是直角三角形,KQKQ 是其斜边中线,于是

PQ=12AK=AQPQ = \dfrac{1}{2} AK = AQ

如果已知 QA=QPQA = QP,由 QK=QA=QPQK = QA = QP 可知 KPA=90\angle KPA = 90^\circ,再由「三线合一」可知 PD=PFPD = PF

构造三角形的中位线

这个时候我们没有办法利用中位线直接证明 QA=QPQA = QP,但是我们可以分别取 ADADAFAF 的中点 MMNN,先证明 QM=QNQM= QN

图8

我们分别取 ABABACAC 的中点 SSTT,于是可以证明 MSQQTN\triangle MSQ \cong \triangle QTN.其中 MSQ=QTN\angle MSQ = \angle QTN 的证明和上一个方法类似.

于是接下来,只需要证明 QAMQPN\triangle QAM \cong \triangle QPN 即可(或者过 QQAPAP 的垂线,利用三线合一来做).

PD=PF    AM=12AD=12(DFAF)=PFNF=PN    SASQA=QP    AAS\begin{aligned} PD = PF &\implies AM = \frac{1}{2} AD \\ &= \frac{1}{2}(DF - AF) \\ &= PF - NF = PN \\ &\implies \mathrm{SAS} \\ \\ QA = QP &\implies \mathrm{AAS}\end{aligned}

两种方法的联系

实际上,如果我们把上一种方法的图和这一种方法的图放在一起,就会发现这两组三角形其实是相似的.

图9

构造梯形的中位线

这种方法和图4的证明是一样的,这里就不在重复了.

可以看出,这是最简单的一种证明方法.

构造旋转相似

这个图还有一个证明方法,就是构造 AA 关于 BCBC 的对称点 SS,如图10,则

SBD=2SAD=2(180SAF)=SCF\begin{aligned} \angle SBD &= 2\angle SAD \\ &= 2\left( 180^\circ - \angle SAF \right) \\ &= \angle SCF\end{aligned}

于是 SBDSCF\triangle SBD \sim \triangle SCF,这是一组旋转相似.

图10

如果已知 PPDFDF 的中点,那么就有 SBDSQPSCF\triangle SBD \sim \triangle SQP \sim \triangle SCF,因此 AQ=SQ=PQAQ = SQ = PQ

具体的推导过程如下:

SBDSCF    SBCSDF    SBQSDP    SBDSQP\begin{aligned} & \triangle SBD \sim \triangle SCF \\ \implies & \triangle SBC \sim \triangle SDF \\ \implies & \triangle SBQ \sim \triangle SDP \\ \implies & \triangle SBD \sim \triangle SQP\end{aligned}

如果已知 QA=QPQA = QP,那么

SBD=2SAD=2(180SAP)=SQP\begin{aligned} \angle SBD &= 2\angle SAD \\ &= 2\left( 180^\circ - \angle SAP \right) \\ &= \angle SQP\end{aligned}

于是 SBDSPQ\triangle SBD \sim \triangle SPQ.由于 QQBCBC 中点,所以 PPDFDF 的中点.

具体的推导过程如下:

SBDSCF    SBCSDFSBDSQP    SBQSDP}        BCDF=SBSD=BQDP\begin{aligned} &\left. \begin{array}{r} \triangle SBD \sim \triangle SCF \\ \implies \triangle SBC \sim \triangle SDF \\ \\ \triangle SBD \sim \triangle SQP \\ \implies \triangle SBQ \sim \triangle SDP \end{array} \right\} \\ \\ & \;\;\implies \frac{BC}{DF} = \frac{SB}{SD} = \frac{BQ}{DP}\end{aligned}

因此

DPDF=BQBP=12\frac{DP}{DF} = \frac{BQ}{BP} = \frac{1}{2}

PPDFDF 的中点.

图11

这种方法大量用到了相似和圆周角的性质,由此又可以引申出关于双圆问题的一些结论.有兴趣的朋友可以自行探究一下.

和前文图形的关系

我们回过头来看一下图8,注意在这个图中我们平没有用到 DDFF 这两个点,因此我们考虑把这两个点去掉,于是这个图就变成了下面这样:

图12

图12AMB\triangle AMBANC\triangle ANC 都是直角三角形,且 MMAANN 共线,取 BCBC 的中点 QQ,则 QM=QNQM = QN

对比一下我们前面那篇文章中的图11,那个图的条件实际上两个直角三角形加上 MAB=CAN\angle MAB = \angle CAN,而图12中则加上 MMAANN 共线,两个条件不同,结论却是相同的.


至此,这个模型的讨论就暂时告一段落.我们在这三篇文章中,系统地讨论了和两个正方形相关的中点问题,以及他们的推广和变形.我们看到,解决这类问题的关键点在于处理好「中点」的条件.我们需要熟练地掌握「倍长中线」和「中位线」的技巧,才能够顺利地解决这些问题.

]]>
@@ -260,7 +260,7 @@ 2020-04-02T17:10:39.000Z 2020-04-13T18:09:00.000Z - 在前一篇文章中,我们提到,在图1中,如果我们考虑 DFDF 的中点,会有一些其它的性质.

图1

图2,我们取 DFDF 的中点,连结 PBPBPCPC,则有 PB=PCPB = PCPBPCPB \perp PC(同理,有 PE=PGPE = PGPEPGPE \perp PG).

图2

我们注意到,这个图形只跟下半部分(或者上半部分有关),因此这类题目经常以两个「等腰直角三角形」的形式出现,如图3

图3

证明方法

这个题的解决方法也有很多,可以用「倍长中线」,可以构造「三角形的中位线」,也可以构造「梯形中位线」.

倍长中线

图4,倍长 BPBPKK,可以证明 ABCFKC\triangle ABC \cong \triangle FKC,注意这是一个旋转 9090^\circ 的全等,因此 CBCBCKCK 垂直且相等,我们得到了一个等腰 RtCBK\mathrm{Rt} \triangle CBK ,于是它的一半 PCB\triangle PCB 也是一个等腰直角三角形.

图4

构造三角形的中位线

图5,分别取 ADADAFAF 的中点 MMNN,可以证明 PMBCNP\triangle PMB \cong \triangle CNP.注意这又是一个旋转 9090^\circ 的全等,因此 PBPBPCPC 垂直且相等.

图5

构造梯形的中位线

图6,分别过 DDFFAABCBC 的垂线,垂足依次为 JJKKLL,则有弦图的模型可知,BJDALB\triangle BJD \cong \triangle ALBFKCCLA\triangle FKC \cong \triangle CLA,于是 BJ=AL=CKBJ = AL = CKDJ=BLDJ = BLFK=CLFK = CL.我们取 BCBC 的中点 QQ,于是 QQ 也是 JKJK 的中点,因此 PQPQ 是梯形 DJKFDJKF 的中位线,故 PQBCPQ \perp BC,且

PQ=12(DJ+FK)=12(BL+CL)=12BC=BQ=CQ\begin{aligned} PQ &= \dfrac{1}{2} \left( DJ + FK \right) = \dfrac{1}{2} \left( BL + CL \right) \\ &= \dfrac{1}{2} BC = BQ = CQ\end{aligned}

因此 PCB\triangle PCB 是等腰直角三角形.

图6

变形

我们需要注意的是,当这两个等腰 RtABD\mathrm{Rt} \triangle ABDACF\triangle ACF 旋转到不同的位置的时候,这个图可能看起来变得完全不一样,但是本质上是一个图形,如图7~图10

图7

图8

图9

图10

推广

图3中,ABD\triangle ABDACF\triangle ACF 都是等腰直角三角形.如果我们把这个条件进行弱化,去掉等腰的条件,但保持两个直角三角形是相似的,即 RtABDRtACF\mathrm{Rt}\triangle ABD \sim \mathrm{Rt}\triangle ACF (其实就是 ADB=AFC\angle ADB = \angle AFC),那么 PB=PCPB = PC 的结论依旧成立.

图11

这个时候的解决方法和前面也是类似的.

倍长中线

这个方法和图4类似,只不过把要证明的全等变成了相似.

图12,倍长 BPBPKK,则

KFFC=DBFC=BAAC\frac{KF}{FC} = \frac{DB}{FC} = \frac{BA}{AC}

而且

KFC=KFD+DFC=FDB+DFC=360DBCFCB=180ABCACB=BAC\begin{aligned} \angle KFC &= \angle KFD + \angle DFC \\ &= \angle FDB + \angle DFC \\ &= 360^\circ - \angle DBC - \angle FCB \\& = 180^\circ - \angle ABC - \angle ACB \\& = \angle BAC\end{aligned}

因此 KFCBAC\triangle KFC \sim \triangle BAC.这是一个旋转 9090^\circ 的相似,于是 BCK\triangle BCK 是直角三角形,CPCP 是其斜边中线,故 CP=12BK=PBCP = \dfrac{1}{2} BK = PB

图12

构造三角形的中位线

这个方法和图5完全一样,BM=12AD=PNBM = \dfrac{1}{2} AD = PNMP=12AF=NCMP = \dfrac{1}{2} AF = NC,且

BMP=BMA+AMP=2BDA+AMP=2CFA+ANP=CNA+ANP=PNC\begin{aligned} \angle BMP &= \angle BMA + \angle AMP \\ &= 2\angle BDA + \angle AMP \\ &= 2\angle CFA + \angle ANP \\ &= \angle CNA + \angle ANP \\ &= \angle PNC\end{aligned}

因此 BMPPNC\triangle BMP \cong \triangle PNC,于是 PB=PCPB = PC

图13

构造梯形的中位线

这个方法和图6类似,不过也是要把证明的全等变成相似.

图14BJDALB\triangle BJD \sim \triangle ALBFKCCLA\triangle FKC \sim \triangle CLA,于是

BJAL=BDAB=CFAC=CKAL\frac{BJ}{AL} = \frac{BD}{AB} = \frac{CF}{AC} = \frac{CK}{AL}

因此 BJ=CKBJ = CK 依旧成立.后面的过程就完全一样了.

我们取 BCBC 的中点 QQ,于是 QQ 也是 JKJK 的中点,因此 PQPQ 是梯形 DJKFDJKF 的中位线,故 PQBCPQ \perp BC,且

PQ=12(DJ+FK)=12(BL+CL)=12BC=BQ=CQ\begin{aligned} PQ &= \dfrac{1}{2} \left( DJ + FK \right) = \dfrac{1}{2} \left( BL + CL \right) \\ &= \dfrac{1}{2} BC = BQ = CQ\end{aligned}

因此 PB=PCPB = PC

图14


总结一下,我们看到处理中点有两种主要的思路,一个是「倍长中线」,一种是「构造中位线」,包括三角形中位线和梯形中位线.在证明的过程中,还可能会用到直角三角形斜边中线的结论.

对于很多题目,这两种思路都行得通.但是一般来说,「倍长中线」的辅助线比较容易想出来,但后续全等(或者相似)的三角形比较难找,证明也比较麻烦.

而「构造中位线」的思路关键在于选对中位线的取法,因此辅助线不太好做,但是后续的证明一般比前一种方法要简单.

对于不同的题目,我们要注意选择不同的方法.


在本文中,我们讨论了如何对正方形(等腰直角三角形)的结论进行推广,我们保留了直角的条件,而去掉了等腰的条件.

那么,我们还可以反过来想,如果保留等腰的条件,去掉直角的条件,那是否还会有这样漂亮的结论?

如果没有的话,是否可以考虑再加上一些条件(就像我们上面加入了相似的条件),再得到比较好的结论?

关于这种情形,我们放在下一篇文章中来讨论.

]]>
+ 在前一篇文章中,我们提到,在图1中,如果我们考虑 DFDF 的中点,会有一些其它的性质.

图1

图2,我们取 DFDF 的中点,连结 PBPBPCPC,则有 PB=PCPB = PCPBPCPB \perp PC(同理,有 PE=PGPE = PGPEPGPE \perp PG).

图2

我们注意到,这个图形只跟下半部分(或者上半部分有关),因此这类题目经常以两个「等腰直角三角形」的形式出现,如图3

图3

证明方法

这个题的解决方法也有很多,可以用「倍长中线」,可以构造「三角形的中位线」,也可以构造「梯形中位线」.

倍长中线

图4,倍长 BPBPKK,可以证明 ABCFKC\triangle ABC \cong \triangle FKC,注意这是一个旋转 9090^\circ 的全等,因此 CBCBCKCK 垂直且相等,我们得到了一个等腰 RtCBK\mathrm{Rt} \triangle CBK ,于是它的一半 PCB\triangle PCB 也是一个等腰直角三角形.

图4

构造三角形的中位线

图5,分别取 ADADAFAF 的中点 MMNN,可以证明 PMBCNP\triangle PMB \cong \triangle CNP.注意这又是一个旋转 9090^\circ 的全等,因此 PBPBPCPC 垂直且相等.

图5

构造梯形的中位线

图6,分别过 DDFFAABCBC 的垂线,垂足依次为 JJKKLL,则有弦图的模型可知,BJDALB\triangle BJD \cong \triangle ALBFKCCLA\triangle FKC \cong \triangle CLA,于是 BJ=AL=CKBJ = AL = CKDJ=BLDJ = BLFK=CLFK = CL.我们取 BCBC 的中点 QQ,于是 QQ 也是 JKJK 的中点,因此 PQPQ 是梯形 DJKFDJKF 的中位线,故 PQBCPQ \perp BC,且

PQ=12(DJ+FK)=12(BL+CL)=12BC=BQ=CQ\begin{aligned} PQ &= \dfrac{1}{2} \left( DJ + FK \right) = \dfrac{1}{2} \left( BL + CL \right) \\ &= \dfrac{1}{2} BC = BQ = CQ\end{aligned}

因此 PCB\triangle PCB 是等腰直角三角形.

图6

变形

我们需要注意的是,当这两个等腰 RtABD\mathrm{Rt} \triangle ABDACF\triangle ACF 旋转到不同的位置的时候,这个图可能看起来变得完全不一样,但是本质上是一个图形,如图7~图10

图7

图8

图9

图10

推广

图3中,ABD\triangle ABDACF\triangle ACF 都是等腰直角三角形.如果我们把这个条件进行弱化,去掉等腰的条件,但保持两个直角三角形是相似的,即 RtABDRtACF\mathrm{Rt}\triangle ABD \sim \mathrm{Rt}\triangle ACF (其实就是 ADB=AFC\angle ADB = \angle AFC),那么 PB=PCPB = PC 的结论依旧成立.

图11

这个时候的解决方法和前面也是类似的.

倍长中线

这个方法和图4类似,只不过把要证明的全等变成了相似.

图12,倍长 BPBPKK,则

KFFC=DBFC=BAAC\frac{KF}{FC} = \frac{DB}{FC} = \frac{BA}{AC}

而且

KFC=KFD+DFC=FDB+DFC=360DBCFCB=180ABCACB=BAC\begin{aligned} \angle KFC &= \angle KFD + \angle DFC \\ &= \angle FDB + \angle DFC \\ &= 360^\circ - \angle DBC - \angle FCB \\& = 180^\circ - \angle ABC - \angle ACB \\& = \angle BAC\end{aligned}

因此 KFCBAC\triangle KFC \sim \triangle BAC.这是一个旋转 9090^\circ 的相似,于是 BCK\triangle BCK 是直角三角形,CPCP 是其斜边中线,故 CP=12BK=PBCP = \dfrac{1}{2} BK = PB

图12

构造三角形的中位线

这个方法和图5完全一样,BM=12AD=PNBM = \dfrac{1}{2} AD = PNMP=12AF=NCMP = \dfrac{1}{2} AF = NC,且

BMP=BMA+AMP=2BDA+AMP=2CFA+ANP=CNA+ANP=PNC\begin{aligned} \angle BMP &= \angle BMA + \angle AMP \\ &= 2\angle BDA + \angle AMP \\ &= 2\angle CFA + \angle ANP \\ &= \angle CNA + \angle ANP \\ &= \angle PNC\end{aligned}

因此 BMPPNC\triangle BMP \cong \triangle PNC,于是 PB=PCPB = PC

图13

构造梯形的中位线

这个方法和图6类似,不过也是要把证明的全等变成相似.

图14BJDALB\triangle BJD \sim \triangle ALBFKCCLA\triangle FKC \sim \triangle CLA,于是

BJAL=BDAB=CFAC=CKAL\frac{BJ}{AL} = \frac{BD}{AB} = \frac{CF}{AC} = \frac{CK}{AL}

因此 BJ=CKBJ = CK 依旧成立.后面的过程就完全一样了.

我们取 BCBC 的中点 QQ,于是 QQ 也是 JKJK 的中点,因此 PQPQ 是梯形 DJKFDJKF 的中位线,故 PQBCPQ \perp BC,且

PQ=12(DJ+FK)=12(BL+CL)=12BC=BQ=CQ\begin{aligned} PQ &= \dfrac{1}{2} \left( DJ + FK \right) = \dfrac{1}{2} \left( BL + CL \right) \\ &= \dfrac{1}{2} BC = BQ = CQ\end{aligned}

因此 PB=PCPB = PC

图14


总结一下,我们看到处理中点有两种主要的思路,一个是「倍长中线」,一种是「构造中位线」,包括三角形中位线和梯形中位线.在证明的过程中,还可能会用到直角三角形斜边中线的结论.

对于很多题目,这两种思路都行得通.但是一般来说,「倍长中线」的辅助线比较容易想出来,但后续全等(或者相似)的三角形比较难找,证明也比较麻烦.

而「构造中位线」的思路关键在于选对中位线的取法,因此辅助线不太好做,但是后续的证明一般比前一种方法要简单.

对于不同的题目,我们要注意选择不同的方法.


在本文中,我们讨论了如何对正方形(等腰直角三角形)的结论进行推广,我们保留了直角的条件,而去掉了等腰的条件.

那么,我们还可以反过来想,如果保留等腰的条件,去掉直角的条件,那是否还会有这样漂亮的结论?

如果没有的话,是否可以考虑再加上一些条件(就像我们上面加入了相似的条件),再得到比较好的结论?

关于这种情形,我们放在下一篇文章中来讨论.

]]>
@@ -289,7 +289,7 @@ 2020-04-01T06:23:42.000Z 2020-04-13T07:03:00.000Z - 在正方形的题目中,有很常见的一类是和两个正方形有关的图形,如下图:

图1

在这个图形中,有很多有意思的性质,也衍生出了很多的题目.我们讲分几次一一道来.

「手拉手」模型

在学习全等的时候,我们知道有一类很重要的全等模型——旋转全等模型,俗称「手拉手」模型.说的是两个共顶点且顶角相等的等腰三角形,一定伴随着一组旋转全等,如图2

图2

ABC\triangle ABCADE\triangle ADE 是两个顶角相等的等腰三角形,易证 ABDACE\triangle ABD \cong \triangle ACE .这是一个旋转全等,旋转角度等于两个等腰三角形的顶角角度.

关于这个模型,也有很多相关的结论,不过大部分和这次的内容关系不大,有机会我们另开文讲述.

那么,对于两个共顶点的正方形,也有类似的结论.在图1中,我们可以把它看成是两个等腰直角三角形 ABEABEACGACG 的「手拉手」,于是就有 ABGAEC\triangle ABG \cong \triangle AEC,而且旋转角度为 9090^\circ

图3

于是,我们就得到了一个对角线垂直且相等的四边形 BCGEBCGE

和中点四边形相关的问题

熟悉中点四边形的朋友马上就会想到,这样一个四边形的中点四边形一定是一个正方形,也就是下面这个图:

图5

在这个图中,中点四边形 MPNQMPNQ 就是一个正方形.

另一个和中点相关的问题

图1中,如果我们取 EGEG 的中点 PP ,连结 APAP ,则 APBCAP \perp BCAP=12BCAP = \dfrac{1}{2} BC.(如果取 BCBC 中点,有类似的结论)

图5

对于中点问题,我们知道一种常见的处理方法就是「倍长中线」,因此我们倍长 APAPHH,可以证明 GHAABC\triangle GHA \cong \triangle ABC.注意这是一个旋转 9090 ^\circ 的全等,因此 AHAHBCBC 垂直且相等,所以上面的结论成立.

图6

这个命题逆命题也成立,即如果 APBCAP \perp BC,则 PPEGEG 的中点,且 AP=12BCAP = \dfrac{1}{2} BC

这个命题也可以利用上图来证明,不过这个时候需要直接延长作 AH=BCAH=BC 来证明全等.

这个时候另外一种处理方法是做垂直,利用弦图的模型来证明全等.

图7

图7,延长 PAPABCBCQQ,作 EMAPEM \perp APMMGNAPGN \perp APNN,则 ABQEAM\triangle ABQ \cong \triangle EAMACQGAM\triangle ACQ \cong \triangle GAM,于是 EM=AQ=NGEM = AQ = NGEMNGEM \parallel NG,因此 EMGNEMGN 是平行四边形,于是

PE=PG,PN=PM,BC=BQ+QC=AM+AN=2AP\begin{aligned} PE &= PG, \\ PN &= PM, \\ BC &= BQ + QC \\ &= AM + AN \\ &= 2AP\end{aligned}

这两个证明同时还都证明了另一个结论,就是 SABC=SAEGS_{\triangle ABC} = S_{\triangle AEG}.由割补法知这两个三角形的面积的确是相等的.

当然,如果熟悉三角函数的话,这两个三角形的面积相等是显然的.因为 BAC\angle BACEAG\angle EAG 互补,而角的两边对应相等,因此面积也是相等的.

变形一

前面我们说了 BCGEBCGE 是一个对角线垂直且相等的四边形,因此,这个题的可以这样来出:

图8,在四边形 ABCDABCD 中,ACBDAC \perp BD,且 AC=BDAC=BD,分别取 ADADBCBCABAB 的中点 MMNNPP,分别过 MMNNADADBCBC 的垂线交于 OO,则 POCDPO \perp CD

图8

这个图如果把 OAOAOBOBOCOCODOD 都连起来,显然有 OACOBD\triangle OAC \cong \triangle OBD,注意这是一个旋转 9090^\circ 的全等,因此 OAD\triangle OADOBC\triangle OBC 都是等腰直角三角形.于是这就变成了图5一样的图了,后面的证明和上面相同.

图9

变形二

如果我们把两个正方形中间再加一个小正方形,那么结论会变成什么样子?

图10,有三个正方形 ABCDABCDAEFGAEFGFHIJFHIJ,取 JDJD 中点 PP,则有 PEBHPE \perp BHPE=12BHPE = \dfrac{1}{2} BH

图10

很明显,这个图是上面图5的一个推广,如果中间的小正方形缩成一个点,那么就变成了图5

既然是推广,那么证明应该也是类似的.我们还是可以倍长 EPEP 来做,不过这个时候要找的全等变得复杂了一些.

图11

图11,我们倍长 EPEPKK,可以类似地证明 JKEGBH\triangle JKE \cong \triangle GBH

不过在证明的时候需要注意,这里面隐藏着两个「手拉手」的全等模型,在证明上面的全等的时候需要用到,如图12,有 ADEABG\triangle ADE \cong \triangle ABGFJEFGH\triangle FJE \cong \triangle FGH,都是旋转 9090^\circ 的全等.

图12

拓展联想

在圆的内接四边形中,有一个类似的结论:

若圆内接四边形的对角线相互垂直,则垂直于一边且过对角线交点的直线将平分对边.

这就是 Brahmagupta 定理,一般译作「婆罗摩笈多定理」,或者「布拉美古塔定理」.

图13,在圆的内接四边形 ABCDABCD 中,ACBDAC \perp BD,过对角线的中点 OOPQABPQ \perp ABQQ,交 CDCD 于点 PP,则 PPCDCD 的中点.

图13

这个的证明是比较简单的,

POC=90QOB=QBO=PCO\begin{aligned} \angle POC &= 90^\circ - \angle QOB \\ &= \angle QBO \\ &= \angle PCO\end{aligned}

于是

POD=90POC=90PCO=PDC\begin{aligned} \angle POD &= 90^\circ - \angle POC \\ &= 90^\circ - \angle PCO \\ &= \angle PDC\end{aligned}

PC=PO=PDPC = PO = PD,直接倒角就可以证明了.

这个定理的逆命题也成立,即如果 PPCDCD 的中点,那么 OPABOP \perp AB.证明和上面类似.


总结一下,这类问题主要是和中点有关系,主要的方法是「倍长中线」和「手拉手」的全等.还有一类问题是借助于中位线来解决的,这一类题目讨论的不是 EGEG 的中点(图1中),而是 DFDF 的中点.这一类问题,我们放到下一篇文章中来讨论.

]]>
+ 在正方形的题目中,有很常见的一类是和两个正方形有关的图形,如下图:

图1

在这个图形中,有很多有意思的性质,也衍生出了很多的题目.我们讲分几次一一道来.

「手拉手」模型

在学习全等的时候,我们知道有一类很重要的全等模型——旋转全等模型,俗称「手拉手」模型.说的是两个共顶点且顶角相等的等腰三角形,一定伴随着一组旋转全等,如图2

图2

ABC\triangle ABCADE\triangle ADE 是两个顶角相等的等腰三角形,易证 ABDACE\triangle ABD \cong \triangle ACE .这是一个旋转全等,旋转角度等于两个等腰三角形的顶角角度.

关于这个模型,也有很多相关的结论,不过大部分和这次的内容关系不大,有机会我们另开文讲述.

那么,对于两个共顶点的正方形,也有类似的结论.在图1中,我们可以把它看成是两个等腰直角三角形 ABEABEACGACG 的「手拉手」,于是就有 ABGAEC\triangle ABG \cong \triangle AEC,而且旋转角度为 9090^\circ

图3

于是,我们就得到了一个对角线垂直且相等的四边形 BCGEBCGE

和中点四边形相关的问题

熟悉中点四边形的朋友马上就会想到,这样一个四边形的中点四边形一定是一个正方形,也就是下面这个图:

图5

在这个图中,中点四边形 MPNQMPNQ 就是一个正方形.

另一个和中点相关的问题

图1中,如果我们取 EGEG 的中点 PP ,连结 APAP ,则 APBCAP \perp BCAP=12BCAP = \dfrac{1}{2} BC.(如果取 BCBC 中点,有类似的结论)

图5

对于中点问题,我们知道一种常见的处理方法就是「倍长中线」,因此我们倍长 APAPHH,可以证明 GHAABC\triangle GHA \cong \triangle ABC.注意这是一个旋转 9090 ^\circ 的全等,因此 AHAHBCBC 垂直且相等,所以上面的结论成立.

图6

这个命题逆命题也成立,即如果 APBCAP \perp BC,则 PPEGEG 的中点,且 AP=12BCAP = \dfrac{1}{2} BC

这个命题也可以利用上图来证明,不过这个时候需要直接延长作 AH=BCAH=BC 来证明全等.

这个时候另外一种处理方法是做垂直,利用弦图的模型来证明全等.

图7

图7,延长 PAPABCBCQQ,作 EMAPEM \perp APMMGNAPGN \perp APNN,则 ABQEAM\triangle ABQ \cong \triangle EAMACQGAM\triangle ACQ \cong \triangle GAM,于是 EM=AQ=NGEM = AQ = NGEMNGEM \parallel NG,因此 EMGNEMGN 是平行四边形,于是

PE=PG,PN=PM,BC=BQ+QC=AM+AN=2AP\begin{aligned} PE &= PG, \\ PN &= PM, \\ BC &= BQ + QC \\ &= AM + AN \\ &= 2AP\end{aligned}

这两个证明同时还都证明了另一个结论,就是 SABC=SAEGS_{\triangle ABC} = S_{\triangle AEG}.由割补法知这两个三角形的面积的确是相等的.

当然,如果熟悉三角函数的话,这两个三角形的面积相等是显然的.因为 BAC\angle BACEAG\angle EAG 互补,而角的两边对应相等,因此面积也是相等的.

变形一

前面我们说了 BCGEBCGE 是一个对角线垂直且相等的四边形,因此,这个题的可以这样来出:

图8,在四边形 ABCDABCD 中,ACBDAC \perp BD,且 AC=BDAC=BD,分别取 ADADBCBCABAB 的中点 MMNNPP,分别过 MMNNADADBCBC 的垂线交于 OO,则 POCDPO \perp CD

图8

这个图如果把 OAOAOBOBOCOCODOD 都连起来,显然有 OACOBD\triangle OAC \cong \triangle OBD,注意这是一个旋转 9090^\circ 的全等,因此 OAD\triangle OADOBC\triangle OBC 都是等腰直角三角形.于是这就变成了图5一样的图了,后面的证明和上面相同.

图9

变形二

如果我们把两个正方形中间再加一个小正方形,那么结论会变成什么样子?

图10,有三个正方形 ABCDABCDAEFGAEFGFHIJFHIJ,取 JDJD 中点 PP,则有 PEBHPE \perp BHPE=12BHPE = \dfrac{1}{2} BH

图10

很明显,这个图是上面图5的一个推广,如果中间的小正方形缩成一个点,那么就变成了图5

既然是推广,那么证明应该也是类似的.我们还是可以倍长 EPEP 来做,不过这个时候要找的全等变得复杂了一些.

图11

图11,我们倍长 EPEPKK,可以类似地证明 JKEGBH\triangle JKE \cong \triangle GBH

不过在证明的时候需要注意,这里面隐藏着两个「手拉手」的全等模型,在证明上面的全等的时候需要用到,如图12,有 ADEABG\triangle ADE \cong \triangle ABGFJEFGH\triangle FJE \cong \triangle FGH,都是旋转 9090^\circ 的全等.

图12

拓展联想

在圆的内接四边形中,有一个类似的结论:

若圆内接四边形的对角线相互垂直,则垂直于一边且过对角线交点的直线将平分对边.

这就是 Brahmagupta 定理,一般译作「婆罗摩笈多定理」,或者「布拉美古塔定理」.

图13,在圆的内接四边形 ABCDABCD 中,ACBDAC \perp BD,过对角线的中点 OOPQABPQ \perp ABQQ,交 CDCD 于点 PP,则 PPCDCD 的中点.

图13

这个的证明是比较简单的,

POC=90QOB=QBO=PCO\begin{aligned} \angle POC &= 90^\circ - \angle QOB \\ &= \angle QBO \\ &= \angle PCO\end{aligned}

于是

POD=90POC=90PCO=PDC\begin{aligned} \angle POD &= 90^\circ - \angle POC \\ &= 90^\circ - \angle PCO \\ &= \angle PDC\end{aligned}

PC=PO=PDPC = PO = PD,直接倒角就可以证明了.

这个定理的逆命题也成立,即如果 PPCDCD 的中点,那么 OPABOP \perp AB.证明和上面类似.


总结一下,这类问题主要是和中点有关系,主要的方法是「倍长中线」和「手拉手」的全等.还有一类问题是借助于中位线来解决的,这一类题目讨论的不是 EGEG 的中点(图1中),而是 DFDF 的中点.这一类问题,我们放到下一篇文章中来讨论.

]]>
@@ -366,7 +366,7 @@ 2019-12-11T06:51:00.000Z 2019-12-12T08:02:21.000Z - 今天在给一个学生讲题的时候遇到了这样一道题目:

x+y3\lvert x \rvert + \lvert y \rvert \le 3 所包含的区域的面积.

易知,这是个正方形,面积是 (32)2=18\left(3\sqrt{2}\right)^2=18.它在第一象限的边界点应该是形如 (t,3t)(t,3-t) 的点,都在 x+y=3x+y=3 这条直线上.

但是,这个学生却想成了 (t,0)(t,0)(0,3t)(0,3-t) 的连线,把所有这样的线都画出来,发现它的边界是一条弧线.于是,这个学生就认为它的边界应该是一条圆弧.

显然,这个学生的错误是很明显的.但这也带来了一个问题:如果按照学生所想的,那么面积应该是多少?

那么首先需要确定的是,它的边界到底是什么?

边界曲线

我们只考虑第一象限的情况.

解法一

这个区域的边界,应该是取最靠外的点,或者是,最靠上的点.于是我们可以想办法求出,在每一个 xx 处,对应的 yy 的最大值.

设线段的方程为

xa+y3a=1(1)\frac{x}{a}+\frac{y}{3-a}=1 \tag{1}

其中 0<a<30<a<30x30 \le x \le 3,于是

y=(3a)(1xa)=3+xa3xa=3+x(a+3xa)3+x2a3xa=3+x23x=(3x)2\begin{aligned} y &= (3-a)\left(1-\frac{x}{a}\right) \\ &= 3+x-a-\frac{3x}{a} \\ &= 3+x-\left(a+\frac{3x}{a}\right) \\ &\le 3+x-2\sqrt{a\cdot \frac{3x}{a}} \\ &= 3+x-2\sqrt{3x} \\ &= \left(\sqrt{3}-\sqrt{x}\right)^2 \end{aligned}

所以边界应该是

x+y=3.(2)\sqrt{x}+\sqrt{y}=\sqrt{3}\tag{2}.

解法二

实际上,这个边界是所有满足条件的线段的包络线

设线段所在直线的方程为

F(x,y,a)=(3a)x+aya(3a)=a2(xy+3)a+3x=0\begin{aligned} F(x,y,a) &= (3-a)x+ay-a(3-a) \\ &= a^2-(x-y+3)a+3x \\ &= 0 \end{aligned}

于是有

Fa=2a(xy+3)=0 \frac{\partial{F}}{\partial{a}} = 2a-(x-y+3)=0

从而 a=xy+32a=\dfrac{x-y+3}{2},代入到前一个方程消去 aa,可以得到

14(xy+3)212(xy+3)2+3x=0 \frac{1}{4}(x-y+3)^2-\frac{1}{2}(x-y+3)^2+3x=0

化简得

(xy+3)2=12x(3) (x-y+3)^2=12x \tag{3}

其图像如下:

可以验证,方程 (3)(3) 和我们前面求出的方程 (2)(2) 是一致的.

解法三

设直线方程同解法二,注意到对于每一个 (x,y)(x,y),有且仅有一个 aa 满足条件.于是有

Δ=(xy+3)212x=0 \Delta=(x-y+3)^2-12x=0

很明显,和解法二得到的结果是一样的.

此解法的出处
此处称该曲线为绣曲线,但我只在此处和中文维基百科的包络线里面见到了这个名词.目前还不清楚这是否是通用的名词.

围出的面积

第一象限所求的面积,就相当于边界和 xx 轴所夹的面积,因此

S=03(3+x+23x)dx=[3x+12x2+2323(3x)32]03=9+4.5+4=22.5\begin{aligned} S &= \int_0^3 \left(3+x+2\sqrt{3x}\right)\mathrm{d}x \\ &= \left.\left[3x+\frac{1}{2}x^2+\frac{2}{3}\cdot \frac{2}{3}(3x)^{\frac{3}{2}}\right]\right|_0^3 \\ &= 9+4.5+4 \\ &= 22.5 \end{aligned}

于是四个象限的区域面积一共是 22.5×4=9022.5\times 4=90

曲线的类型

很明显,这是一条二次曲线的一部分.经过仿射变换

{x=xy=xy+3 \begin{cases} x'=x \\ y'=x-y+3 \end{cases}

变为 y2=12x{y'}^2=12x,容易看出这是一条抛物线.

如果要做保距变换的话,则是

(xy)=(cosπ4sinπ4sinπ4cosπ4)(xy)+(3434)\begin{pmatrix} x \\[12pt] y \end{pmatrix} = \begin{pmatrix} \cos\dfrac{\pi}{4} & -\sin\dfrac{\pi}{4} \\[10pt] \sin\dfrac{\pi}{4} & \cos\dfrac{\pi}{4} \end{pmatrix} \begin{pmatrix} x' \\[12pt] y' \end{pmatrix} + \begin{pmatrix} \dfrac{3}{4} \\[8pt] \dfrac{3}{4} \end{pmatrix}

此时方程变为 y2=32x{y'}^2=3\sqrt{2}x',焦点为 (324,0)\left(\dfrac{3\sqrt{2}}{4},0\right),准线为 x=324x'=-\dfrac{3\sqrt{2}}{4}

于是原抛物线的焦点是 (32,0)\left(\dfrac{3}{2},0\right),准线为 y=xy=x

问题拓展

在高中学习抛物线的时候,有这样一道题目:

对于抛物线 y2=2pxy^2=2px,过点K(p2,0)K\left(-\dfrac{p}{2},0\right) 作抛物线的两条切线,切点分别为 AABB,过抛物线在两切点之间的部分上的任意一点,作抛物线的切线,分别交 KAKAKBKBMMNN,求证: KM+KN\left|KM\right|+\left|KN\right| 为定值.

证明

抛物线在 (x0,y0)\left(x_0,y_0\right) 处的切线是 MN:y=py0(x+x0)MN: y=\dfrac{p}{y_0}\left(x+x_0\right).易知经过 KK 的两条切线的方程为 y=±(x+p2)y=\pm\left(x+\dfrac{p}{2}\right),从而可解得交点的纵坐标为 yM,N=p2x0±1y0py_{M,N}=\dfrac{\dfrac{p}{2}-x_0}{\pm 1-\dfrac{y_0}{p}},因此

KM+KN=2yMyN=2p\left|KM\right|+\left|KN\right|=\sqrt{2}\left|y_M-y_N\right|=\sqrt{2}p

为定值.

与前面的联系

其实仔细观察一下就会发现,抛物线这道题里面的 MNMN,就是我们方程 (1)(1) 所对应的线段,所有满足条件的 MNMN 的包络线就是抛物线在 AABB 之间的部分!

]]>
+ 今天在给一个学生讲题的时候遇到了这样一道题目:

x+y3\lvert x \rvert + \lvert y \rvert \le 3 所包含的区域的面积.

易知,这是个正方形,面积是 (32)2=18\left(3\sqrt{2}\right)^2=18.它在第一象限的边界点应该是形如 (t,3t)(t,3-t) 的点,都在 x+y=3x+y=3 这条直线上.

但是,这个学生却想成了 (t,0)(t,0)(0,3t)(0,3-t) 的连线,把所有这样的线都画出来,发现它的边界是一条弧线.于是,这个学生就认为它的边界应该是一条圆弧.

显然,这个学生的错误是很明显的.但这也带来了一个问题:如果按照学生所想的,那么面积应该是多少?

那么首先需要确定的是,它的边界到底是什么?

边界曲线

我们只考虑第一象限的情况.

解法一

这个区域的边界,应该是取最靠外的点,或者是,最靠上的点.于是我们可以想办法求出,在每一个 xx 处,对应的 yy 的最大值.

设线段的方程为

xa+y3a=1(1)\frac{x}{a}+\frac{y}{3-a}=1 \tag{1}

其中 0<a<30<a<30x30 \le x \le 3,于是

y=(3a)(1xa)=3+xa3xa=3+x(a+3xa)3+x2a3xa=3+x23x=(3x)2\begin{aligned} y &= (3-a)\left(1-\frac{x}{a}\right) \\ &= 3+x-a-\frac{3x}{a} \\ &= 3+x-\left(a+\frac{3x}{a}\right) \\ &\le 3+x-2\sqrt{a\cdot \frac{3x}{a}} \\ &= 3+x-2\sqrt{3x} \\ &= \left(\sqrt{3}-\sqrt{x}\right)^2 \end{aligned}

所以边界应该是

x+y=3.(2)\sqrt{x}+\sqrt{y}=\sqrt{3}\tag{2}.

解法二

实际上,这个边界是所有满足条件的线段的包络线

设线段所在直线的方程为

F(x,y,a)=(3a)x+aya(3a)=a2(xy+3)a+3x=0\begin{aligned} F(x,y,a) &= (3-a)x+ay-a(3-a) \\ &= a^2-(x-y+3)a+3x \\ &= 0 \end{aligned}

于是有

Fa=2a(xy+3)=0 \frac{\partial{F}}{\partial{a}} = 2a-(x-y+3)=0

从而 a=xy+32a=\dfrac{x-y+3}{2},代入到前一个方程消去 aa,可以得到

14(xy+3)212(xy+3)2+3x=0 \frac{1}{4}(x-y+3)^2-\frac{1}{2}(x-y+3)^2+3x=0

化简得

(xy+3)2=12x(3) (x-y+3)^2=12x \tag{3}

其图像如下:

可以验证,方程 (3)(3) 和我们前面求出的方程 (2)(2) 是一致的.

解法三

设直线方程同解法二,注意到对于每一个 (x,y)(x,y),有且仅有一个 aa 满足条件.于是有

Δ=(xy+3)212x=0 \Delta=(x-y+3)^2-12x=0

很明显,和解法二得到的结果是一样的.

此解法的出处
此处称该曲线为绣曲线,但我只在此处和中文维基百科的包络线里面见到了这个名词.目前还不清楚这是否是通用的名词.

围出的面积

第一象限所求的面积,就相当于边界和 xx 轴所夹的面积,因此

S=03(3+x+23x)dx=[3x+12x2+2323(3x)32]03=9+4.5+4=22.5\begin{aligned} S &= \int_0^3 \left(3+x+2\sqrt{3x}\right)\mathrm{d}x \\ &= \left.\left[3x+\frac{1}{2}x^2+\frac{2}{3}\cdot \frac{2}{3}(3x)^{\frac{3}{2}}\right]\right|_0^3 \\ &= 9+4.5+4 \\ &= 22.5 \end{aligned}

于是四个象限的区域面积一共是 22.5×4=9022.5\times 4=90

曲线的类型

很明显,这是一条二次曲线的一部分.经过仿射变换

{x=xy=xy+3 \begin{cases} x'=x \\ y'=x-y+3 \end{cases}

变为 y2=12x{y'}^2=12x,容易看出这是一条抛物线.

如果要做保距变换的话,则是

(xy)=(cosπ4sinπ4sinπ4cosπ4)(xy)+(3434)\begin{pmatrix} x \\[12pt] y \end{pmatrix} = \begin{pmatrix} \cos\dfrac{\pi}{4} & -\sin\dfrac{\pi}{4} \\[10pt] \sin\dfrac{\pi}{4} & \cos\dfrac{\pi}{4} \end{pmatrix} \begin{pmatrix} x' \\[12pt] y' \end{pmatrix} + \begin{pmatrix} \dfrac{3}{4} \\[8pt] \dfrac{3}{4} \end{pmatrix}

此时方程变为 y2=32x{y'}^2=3\sqrt{2}x',焦点为 (324,0)\left(\dfrac{3\sqrt{2}}{4},0\right),准线为 x=324x'=-\dfrac{3\sqrt{2}}{4}

于是原抛物线的焦点是 (32,0)\left(\dfrac{3}{2},0\right),准线为 y=xy=x

问题拓展

在高中学习抛物线的时候,有这样一道题目:

对于抛物线 y2=2pxy^2=2px,过点K(p2,0)K\left(-\dfrac{p}{2},0\right) 作抛物线的两条切线,切点分别为 AABB,过抛物线在两切点之间的部分上的任意一点,作抛物线的切线,分别交 KAKAKBKBMMNN,求证: KM+KN\left|KM\right|+\left|KN\right| 为定值.

证明

抛物线在 (x0,y0)\left(x_0,y_0\right) 处的切线是 MN:y=py0(x+x0)MN: y=\dfrac{p}{y_0}\left(x+x_0\right).易知经过 KK 的两条切线的方程为 y=±(x+p2)y=\pm\left(x+\dfrac{p}{2}\right),从而可解得交点的纵坐标为 yM,N=p2x0±1y0py_{M,N}=\dfrac{\dfrac{p}{2}-x_0}{\pm 1-\dfrac{y_0}{p}},因此

KM+KN=2yMyN=2p\left|KM\right|+\left|KN\right|=\sqrt{2}\left|y_M-y_N\right|=\sqrt{2}p

为定值.

与前面的联系

其实仔细观察一下就会发现,抛物线这道题里面的 MNMN,就是我们方程 (1)(1) 所对应的线段,所有满足条件的 MNMN 的包络线就是抛物线在 AABB 之间的部分!

]]>
@@ -393,7 +393,7 @@ 2019-12-10T14:59:56.000Z 2019-12-10T14:59:56.000Z - 题目

aabb 为正整数,且满足 a+b3a+b^3 能被 a2+3ab+3b21a^2+3ab+3b^2-1 整除.求证:a2+3ab+3b21a^2+3ab+3b^2-1 能被一个大于 11 的整数的立方整除.[1]

分析

根据题目中 a2+3ab+3b2a^2+3ab+3b^2 的形式,容易看出应该和 (a+b)3(a+b)^3 有关系,从而可以证出 (a+b)3(a+b)^3 能被 a2+3ab+3b21a^2+3ab+3b^2-1

而本题的难点在于如何证明 a2+3ab+3b21a^2+3ab+3b^2-1 有次数不小于 33 的因子.这里使用了反证法,并对要证明的结论进行了加强,把证明 a2+3ab+3b21a^2+3ab+3b^2-1 中素因子的次数大于 22,转化为证明其大于 (a+b)(a+b) 中对应的素因子的次数的 22 倍,从而更容易导出矛盾.

解答

T=a2+3ab+3b21T=a^2+3ab+3b^2-1,则

(a+b)3=a3+3a2b+3ab2+b3=a(a2+3ab+3b2)+b3=a(T+1)+b3=aT+(a+b3) \begin{aligned} \left( a+b \right)^3 &= a^3+3a^2b+3ab^2+b^3 \\ &= a\left( a^2+3ab+3b^2 \right) + b^3 \\ &= a\left( T+1 \right) + b^3 \\ &= aT + \left( a+b^3 \right) \end{aligned}

由题知,Ta+b3T \mid a+b^3,故 T(a+b)3T \mid \left( a+b \right)^3

a+ba+b 的质因数分解为 p1r1p2r2pnrnp_1^{r_1}p_2^{r_2} \cdots p_n^{r_n}T=p1s1p2s2pnsnT = p_1^{s_1}p_2^{s_2} \cdots p_n^{s_n},其中 ri1,si0r_i\geqslant 1, s_i\geqslant 0,则只需证明存在一个 sk3s_k\geqslant 3 即可.

若对于任意的 1in1 \leqslant i \leqslant n,都有 si2s_i \leqslant 2,于是 si2ris_i \leqslant 2r_i,此时有 T(a+b)2T \mid \left( a+b \right)^2.但是,

T=a2+3ab+3b21>a2+2ab+b2=(a+b)2, \begin{aligned} T&=a^2+3ab+3b^2-1 \\ &>a^2+2ab+b^2 \\ &=\left( a+b \right)^2, \end{aligned}

矛盾.所以一定存在一个 sk3s_k\geqslant 3,于是 pk3Tp_k^3\mid T


  1. 英文题目的下载链接 ↩︎

]]>
+ 题目

aabb 为正整数,且满足 a+b3a+b^3 能被 a2+3ab+3b21a^2+3ab+3b^2-1 整除.求证:a2+3ab+3b21a^2+3ab+3b^2-1 能被一个大于 11 的整数的立方整除.[1]

分析

根据题目中 a2+3ab+3b2a^2+3ab+3b^2 的形式,容易看出应该和 (a+b)3(a+b)^3 有关系,从而可以证出 (a+b)3(a+b)^3 能被 a2+3ab+3b21a^2+3ab+3b^2-1

而本题的难点在于如何证明 a2+3ab+3b21a^2+3ab+3b^2-1 有次数不小于 33 的因子.这里使用了反证法,并对要证明的结论进行了加强,把证明 a2+3ab+3b21a^2+3ab+3b^2-1 中素因子的次数大于 22,转化为证明其大于 (a+b)(a+b) 中对应的素因子的次数的 22 倍,从而更容易导出矛盾.

解答

T=a2+3ab+3b21T=a^2+3ab+3b^2-1,则

(a+b)3=a3+3a2b+3ab2+b3=a(a2+3ab+3b2)+b3=a(T+1)+b3=aT+(a+b3) \begin{aligned} \left( a+b \right)^3 &= a^3+3a^2b+3ab^2+b^3 \\ &= a\left( a^2+3ab+3b^2 \right) + b^3 \\ &= a\left( T+1 \right) + b^3 \\ &= aT + \left( a+b^3 \right) \end{aligned}

由题知,Ta+b3T \mid a+b^3,故 T(a+b)3T \mid \left( a+b \right)^3

a+ba+b 的质因数分解为 p1r1p2r2pnrnp_1^{r_1}p_2^{r_2} \cdots p_n^{r_n}T=p1s1p2s2pnsnT = p_1^{s_1}p_2^{s_2} \cdots p_n^{s_n},其中 ri1,si0r_i\geqslant 1, s_i\geqslant 0,则只需证明存在一个 sk3s_k\geqslant 3 即可.

若对于任意的 1in1 \leqslant i \leqslant n,都有 si2s_i \leqslant 2,于是 si2ris_i \leqslant 2r_i,此时有 T(a+b)2T \mid \left( a+b \right)^2.但是,

T=a2+3ab+3b21>a2+2ab+b2=(a+b)2, \begin{aligned} T&=a^2+3ab+3b^2-1 \\ &>a^2+2ab+b^2 \\ &=\left( a+b \right)^2, \end{aligned}

矛盾.所以一定存在一个 sk3s_k\geqslant 3,于是 pk3Tp_k^3\mid T


  1. 英文题目的下载链接 ↩︎

]]>
@@ -472,7 +472,7 @@ 2019-09-13T16:31:00.000Z 2019-09-13T16:31:00.000Z - 今天终于有时间,打了两把雀魂,吃了两个二。

遇dora弃胡

南2局0本场12巡目

上家6巡立直,自家随后听牌,听的是上家的现物47p,而且只有平和一番,dora 2s一张未现,于是没有立直,准备看看有没有可能偷到现物。

之后几巡都没有摸到太危险的牌,打过一次筋3s,然后摸到了dora 2s。何切?

对家在一发巡的时候打过5s,所以2s不可能铳两面。只能铳坎13s、2s对碰或者2s单骑。一旦铳到后两个,则至少是立直dora2/3起,至少3900甚至很可能满贯,而自家只是1000点手牌,显然达不到对日的标准,于是这里只能选择弃胡。

南2局0本场18巡目

实际上,上家正是单听2s,如果点了就是立直七对dora2的满贯12000点,那么就给了三位逆二的机会。

弃胡or进攻

东1局0本场11巡目

这里面对下家十二落抬,摸上生牌9s,是否要弃胡?

我当时的选择是弃胡,最终流掉了这一把。但事后仔细想一下,下家虽然是四副露听牌,但如果打9s点了,只会是1600点的牌。而自家是平和dora3的一向听,满贯的手牌,因此完全可以和下家对日。

进攻or弃胡

东4局0本场7巡目

这里连送上家三个碰牌,之后上家打东。这里是碰东进攻,还是直接弃胡?

我当时的选择是碰东进攻,主要考虑到自家是东dora dora,3900的牌,而上家很可能只是一个对对。当然上家也有可能是对对dora2/3的牌,毕竟8s一张未现。这里其实是有些冲动了,因为连续喂了上家三张牌,心情有些不好,于是就直接冲上去了。

东4局0本场13巡目

不过最终还是自摸了2000-1000,赢下了这局。(而上家还在1向听。。。)

1安≈无安,无安=全攻

南3局0本场7巡目

下家立直,这里只有一张5s是安牌,是打5s弃胡,还是直接进攻?

这里自家3位,下家4位,下家立直后与自家只差1400点,如果下家胡到的话,自己就会四位进入南四,那么All last就必须要胡牌才能避四。

因此,这里只能选择进攻。

我当时选择切了4p,但实际上这是一个不太好的选择,因为这样剩下了两个对子,很有可能听到两个中张的对碰上。

好在发牌姬眷顾,下一巡就摸上了绝张6s,打6m立直后,下家一发巡摸上2s,点了一个5200。

南3局0本场8巡目
南3局0本场8巡目

这里实际上按照牌效应该切6/9m,切6m保dora,切9m有断幺,实际上是番数一样的。从安全度上来说,切6m的危险度更高一点,但切9m点了的话会损失会更大一些。但考虑到断幺之后可以吃碰,这里感觉切9m会更好一些。

什么叫做“发牌姬搞我”(下家)

东2局2本场7巡目
东2局2本场12巡目

上家立直,下家摸到第四张4p,然后开始弃胡。

五巡之后,下家已经没有安牌了,于是考虑能否打一个半筋4p,然后一搏四巡——然后就点了一个坎4p。。。

当然,如果下家杠了4p,这就是另外一个故事了。。。

]]>
+ 今天终于有时间,打了两把雀魂,吃了两个二。

遇dora弃胡

南2局0本场12巡目

上家6巡立直,自家随后听牌,听的是上家的现物47p,而且只有平和一番,dora 2s一张未现,于是没有立直,准备看看有没有可能偷到现物。

之后几巡都没有摸到太危险的牌,打过一次筋3s,然后摸到了dora 2s。何切?

对家在一发巡的时候打过5s,所以2s不可能铳两面。只能铳坎13s、2s对碰或者2s单骑。一旦铳到后两个,则至少是立直dora2/3起,至少3900甚至很可能满贯,而自家只是1000点手牌,显然达不到对日的标准,于是这里只能选择弃胡。

南2局0本场18巡目

实际上,上家正是单听2s,如果点了就是立直七对dora2的满贯12000点,那么就给了三位逆二的机会。

弃胡or进攻

东1局0本场11巡目

这里面对下家十二落抬,摸上生牌9s,是否要弃胡?

我当时的选择是弃胡,最终流掉了这一把。但事后仔细想一下,下家虽然是四副露听牌,但如果打9s点了,只会是1600点的牌。而自家是平和dora3的一向听,满贯的手牌,因此完全可以和下家对日。

进攻or弃胡

东4局0本场7巡目

这里连送上家三个碰牌,之后上家打东。这里是碰东进攻,还是直接弃胡?

我当时的选择是碰东进攻,主要考虑到自家是东dora dora,3900的牌,而上家很可能只是一个对对。当然上家也有可能是对对dora2/3的牌,毕竟8s一张未现。这里其实是有些冲动了,因为连续喂了上家三张牌,心情有些不好,于是就直接冲上去了。

东4局0本场13巡目

不过最终还是自摸了2000-1000,赢下了这局。(而上家还在1向听。。。)

1安≈无安,无安=全攻

南3局0本场7巡目

下家立直,这里只有一张5s是安牌,是打5s弃胡,还是直接进攻?

这里自家3位,下家4位,下家立直后与自家只差1400点,如果下家胡到的话,自己就会四位进入南四,那么All last就必须要胡牌才能避四。

因此,这里只能选择进攻。

我当时选择切了4p,但实际上这是一个不太好的选择,因为这样剩下了两个对子,很有可能听到两个中张的对碰上。

好在发牌姬眷顾,下一巡就摸上了绝张6s,打6m立直后,下家一发巡摸上2s,点了一个5200。

南3局0本场8巡目
南3局0本场8巡目

这里实际上按照牌效应该切6/9m,切6m保dora,切9m有断幺,实际上是番数一样的。从安全度上来说,切6m的危险度更高一点,但切9m点了的话会损失会更大一些。但考虑到断幺之后可以吃碰,这里感觉切9m会更好一些。

什么叫做“发牌姬搞我”(下家)

东2局2本场7巡目
东2局2本场12巡目

上家立直,下家摸到第四张4p,然后开始弃胡。

五巡之后,下家已经没有安牌了,于是考虑能否打一个半筋4p,然后一搏四巡——然后就点了一个坎4p。。。

当然,如果下家杠了4p,这就是另外一个故事了。。。

]]>
@@ -497,7 +497,7 @@ 2019-09-09T16:48:00.000Z 2019-09-10T08:50:02.000Z - 今天又看了一些太くないお的牌谱,发现自己的牌效和攻守判断有不小问题。

两面·顺子⚪单骑

东3局1本场7巡目

上家打0p,这里太くないお吃了,打1m。

这里1m比打2m略优,因为245667m可以视为一个三面进章的好型,进358m都可以形成两个面子。

之前看《琴南幼儿园笔记本》时,里面也提到了这种牌型,就是“两面·顺子⚪单骑”是一个好型,这里即是一个例子

两面·顺子⚪单骑

对子的处理

南1局1本场6巡目

这里我的第一反应是模切7p,而太くないお则是手切了4m。

这里切4m并不损失5m的进章,保留7p则可以保留做7对的可能性。

南1局1本场8巡目

后续进到了8m,我的第一反应是切7p/2s固定好型,而太くないお则是切了3s。

这里如果切7p,那么2s就得作雀头,3s实际上是一张没用的牌。而如果切3s,还多了7p和2s的进张。

而根据“双雀头最强”的理论(2ヘッド理論),这里保留7p和2s两个雀头牌效是最高的。

南1局1本场9巡目

之后又进到了7m,这里切7p比且切7m略好一点。因为这里打掉7p之后,减少了2枚7p的进张,多了67m共3枚进张。另外需要注意的是,这时58p已现4张,虽然还是两面听牌,但已经和愚型听牌差不多了。

防守的意识

南2局0本场10巡目

2巡前下家碰4s打红中,然后上家碰了中打6m。这里我还在考虑切9p进攻的时候,太くないお直接打了8p防守。

仔细想一下,已经到了中盘,下家断幺副露后切了字牌,之后一直模切,应该有50%的概率听牌,至少也是一向听。上家也是类似的情况。而这里自家的手牌还是2个愚型的3向听,因此这里的确应该考虑弃胡了。

实际上,这里下家是断幺Dora2的一向听,而上家已经是中Dora2听牌。

总结

从自己打牌的经历来看,对于防守的判断还停留在有人立直才防守的层面上,对于其他情况,比如副露的防守还不是很有意识。

另外,当自己的牌不好的时候,就应该提前考虑弃胡,而不是强行进攻,这点在之后打牌的时候务必要注意。

]]>
+ 今天又看了一些太くないお的牌谱,发现自己的牌效和攻守判断有不小问题。

两面·顺子⚪单骑

东3局1本场7巡目

上家打0p,这里太くないお吃了,打1m。

这里1m比打2m略优,因为245667m可以视为一个三面进章的好型,进358m都可以形成两个面子。

之前看《琴南幼儿园笔记本》时,里面也提到了这种牌型,就是“两面·顺子⚪单骑”是一个好型,这里即是一个例子

两面·顺子⚪单骑

对子的处理

南1局1本场6巡目

这里我的第一反应是模切7p,而太くないお则是手切了4m。

这里切4m并不损失5m的进章,保留7p则可以保留做7对的可能性。

南1局1本场8巡目

后续进到了8m,我的第一反应是切7p/2s固定好型,而太くないお则是切了3s。

这里如果切7p,那么2s就得作雀头,3s实际上是一张没用的牌。而如果切3s,还多了7p和2s的进张。

而根据“双雀头最强”的理论(2ヘッド理論),这里保留7p和2s两个雀头牌效是最高的。

南1局1本场9巡目

之后又进到了7m,这里切7p比且切7m略好一点。因为这里打掉7p之后,减少了2枚7p的进张,多了67m共3枚进张。另外需要注意的是,这时58p已现4张,虽然还是两面听牌,但已经和愚型听牌差不多了。

防守的意识

南2局0本场10巡目

2巡前下家碰4s打红中,然后上家碰了中打6m。这里我还在考虑切9p进攻的时候,太くないお直接打了8p防守。

仔细想一下,已经到了中盘,下家断幺副露后切了字牌,之后一直模切,应该有50%的概率听牌,至少也是一向听。上家也是类似的情况。而这里自家的手牌还是2个愚型的3向听,因此这里的确应该考虑弃胡了。

实际上,这里下家是断幺Dora2的一向听,而上家已经是中Dora2听牌。

总结

从自己打牌的经历来看,对于防守的判断还停留在有人立直才防守的层面上,对于其他情况,比如副露的防守还不是很有意识。

另外,当自己的牌不好的时候,就应该提前考虑弃胡,而不是强行进攻,这点在之后打牌的时候务必要注意。

]]>
diff --git a/categories/index.html b/categories/index.html index 7040c728b..1d9526f09 100644 --- a/categories/index.html +++ b/categories/index.html @@ -33,7 +33,7 @@ - + diff --git a/css/main.css b/css/main.css index 5780bcc9a..8e3c5c56e 100644 --- a/css/main.css +++ b/css/main.css @@ -1230,7 +1230,7 @@ pre .javascript .function { } .links-of-author a::before, .links-of-author span.exturl::before { - background: #8bfffc; + background: #015eff; border-radius: 50%; content: ' '; display: inline-block; diff --git a/links/index.html b/links/index.html index 718fb8596..7194b5a89 100644 --- a/links/index.html +++ b/links/index.html @@ -25,15 +25,15 @@ var CONFIG = {"hostname":"wangjiezhe.com","root":"/","scheme":"Gemini","version":"7.8.0","exturl":true,"sidebar":{"position":"left","display":"post","padding":18,"offset":12,"onmobile":false},"copycode":{"enable":true,"show_result":true,"style":"mac"},"back2top":{"scrollpercent":true,"enable":true,"sidebar":false},"bookmark":{"enable":false,"color":"#222","save":"auto"},"fancybox":true,"mediumzoom":false,"lazyload":true,"pangu":true,"comments":{"style":"tabs","active":null,"storage":true,"lazyload":false,"nav":null},"algolia":{"hits":{"per_page":10},"labels":{"input_placeholder":"Search for Posts","hits_empty":"We didn't find any results for the search: ${query}","hits_stats":"${hits} results found in ${time} ms"}},"localsearch":{"enable":true,"style":"flat","trigger":"auto","top_n_per_article":1,"unescape":false,"preload":false},"motion":{"enable":true,"async":false,"transition":{"post_block":"fadeIn","post_header":"slideDownIn","post_body":"slideDownIn","coll_header":"slideLeftIn","sidebar":"slideUpIn"}},"path":"search.xml"}; - + - + - + @@ -235,13 +235,13 @@

友情链接
-

数学

+

数学

  • Terence Tao's Blog
  • 兰琦的数学之旅
  • 数学望远镜
-

工具

+

工具

  • 中国传统颜色手册
  • NIPPON COLORS - 日本の伝統色 一个非常好的选色网站
  • @@ -250,7 +250,7 @@

    工具

  • IP地址查询
  • SM.MS 免费图床
-

博客

+

博客

  • 樱花庄的白猫 | ねこ・しろ・ましろ
  • 千灵
  • @@ -259,14 +259,14 @@

    博客

  • Sukka's Blog
  • 依云's Blog
-

立直麻将

-

平台

+

立直麻将

+

平台

  • 天凤/Web版
  • 雀魂(国服)
  • 雀魂(日服)
-

工具

+

工具

  • 天凤/牌理
  • 電脳麻将: 何切る解答機
  • @@ -279,7 +279,7 @@

    工具

  • 天凤记录
  • 天凤日志收集
-

文章

+

文章

  • 日麻教学与教程部分汇总
  • 魔女 原魔女Blog作者的新博客
  • @@ -299,7 +299,7 @@

    文章

  • 麻将教程 79博客,おしえて!科学する麻雀,麻雀魔神の読み
  • 广林成麻
-

何切集

+

何切集

  • 琴南幼儿园图书馆 《麻雀 傑作「何切る」300選》《麻雀 定石「何切る」301選》《これだけで勝てる! 麻雀の基本形80》
  • 坚冰集
  • diff --git a/posts/2014-03-01-Linux-Notes-1/index.html b/posts/2014-03-01-Linux-Notes-1/index.html index 5cb787fe5..288a1d146 100644 --- a/posts/2014-03-01-Linux-Notes-1/index.html +++ b/posts/2014-03-01-Linux-Notes-1/index.html @@ -275,26 +275,26 @@

    -

    一、vim替换

    +

    一、vim替换

    ctrl+v 进入列模式,向下或向上移动光标,把需要注释的行的开头标记起来,然后按大写的I,再插入注释符,比如#,再按Esc,就会全部注释。或者也可以运行下面这些命令:

    1
    2
    3
    4
    :s/^/#            #用"#"注释当前行
    :2,50s/^/# #在2~50行首添加"#"注释
    :.,+3s/^/# #用"#"注释当前行和当前行后面的三行
    :%s/^/# #用"#"注释所有行

    顺便说一下vim的替换,这个常用,已经牢记,其实和上面用命令注释多行是一样的,只不过是上面注释的命令里的"^"符号代表开始位置而已,在下面这些命令中,"s"代表替换,part1代表查找的内容,part2代表替换的内容,"%"代表所有行,"g"代表替换整行里所有的内容(如果不加"/g"则只替换每行第一个匹配part1的地方)。

    p.n.关于g的用法貌似在本系统相反,虽然各处都这么说。。。

    1
    2
    3
    4
    5
    6
    7
    8
    :s/part1/part2              #用part2替换当前行中第1个part1
    :s/part1/part2/g #用part2替换当前行中所有的part1
    :%s/part1/part2 #用part2替换所有行中每行第1个part1
    :%s/part1/part2/g #用part2替换所有行中所有的part1
    :2,50s/part1/part2 #用part2替换第2行到第50行中每行第1个part1
    :2,50s/part1/part2/g #用part2替换第2行到第50行中所有的part1
    :.,+3s/part1/part2 #用part2替换当前行以及当前行后面的三行中每行第1个part1
    :.,+3s/part1/part2/g #用part2替换当前行以及当前行后面的三行中所有的part1

    BTW:在替换时要注意,某些字符是需要转译的,如空格、括号等。

    -

    二、sed添加空行

    -

    (一)每行前后添加空行

    +

    二、sed添加空行

    +

    (一)每行前后添加空行

    1
    2
    3
    4
    5
    6
    sed G tmp                          #每行后面添加一行空行
    sed '{x;p;x;}' tmp #每行前面添加一行空行
    sed 'G;G' tmp #每行后面添加两行空行
    sed '{x;p;x;x;p;x;}' tmp #每行前面添加两行空行
    sed 'G;G;G' tmp #每行后面添加三行空行
    sed '{x;p;x;x;p;x;x;p;x}' tmp #每行前面添加三行空行

    依次类推,添加几行空行,就有几个G或者x;p;x

    -

    (二)如果行后有空行,则删除,然后每行后面添加空行

    +

    (二)如果行后有空行,则删除,然后每行后面添加空行

    sed '/^$/d;G' tmp

    -

    (三)在匹配行前后添加空行

    +

    (三)在匹配行前后添加空行

    1
    2
    3
    4
    5
    sed '/shui/G' tmp               #如果一行里面有如果一行里面有shui这个单词,那么在他后面会添加一个空行
    sed '/shui/{x;p;x;G}' tmp #如果一行里面有shui这个单词,那么在他前后各添加一个空行
    sed '/shui/{x;p;x;}' tmp #如果一行里面有shui这个单词,那么在他前面添加一个空行
    sed '1{x;p;x;}' tmp #在第一行前面添加空行,想在第几行,命令中的1就改成几
    sed '1G' tmp #在第一行后面添加空行,想在第几行,命令中的1就改成几
    -

    (四)每几行后面添加一个空行

    +

    (四)每几行后面添加一个空行

    1
    2
    3
    4
    sed 'N;/^$/d;G' tmp                #每两行后面增加一个空行
    sed 'N;/^$/d;{x;p;x;}' tmp #每两行前面添加一个空行
    sed 'N;N;/^$/d;G' tmp #每三行后面增加一个空行
    sed 'N;N;/^$/d;{x;p;x;}' tmp #每三行前面增加一个空行
    -

    (五)以x为开头或以x为结尾的行前后添加空行

    +

    (五)以x为开头或以x为结尾的行前后添加空行

    1
    2
    3
    4
    sed '/^xi/G;' tmp             #以xi为开头的行后面添加空行
    sed '/^xi/{x;p;x;}' tmp #以xi为结尾的行前面添加空行
    sed '/xi$/G;' tmp #以xi为结尾的行后面添加空行
    sed '/xi$/{x;p;x;}' tmp #以xi为结尾的行后面添加空行
    -

    三、sed删除行首空格

    +

    三、sed删除行首空格

    如果确认只是空格:

    sed 's/^ *//' infile

    如果判断不清行首是空格还是制表符的话, 还可以用这个:

    diff --git a/posts/2014-03-09-intro-for-regular-expression/index.html b/posts/2014-03-09-intro-for-regular-expression/index.html index 9dadd2131..9466f217a 100644 --- a/posts/2014-03-09-intro-for-regular-expression/index.html +++ b/posts/2014-03-09-intro-for-regular-expression/index.html @@ -276,25 +276,25 @@

    -

    元字符 (grep, sed)

    -

    1. 句点元字符 .

    +

    元字符 (grep, sed)

    +

    1. 句点元字符 .

    通配元字符,匹配任意字符,除了换行符。

    -

    2. 反斜杠元字符 \\

    +

    2. 反斜杠元字符 \\

    将其后面的一个字符解释为普通字符而不是元字符。

    -

    3. 星号元字符 \*

    +

    3. 星号元字符 \*

    其紧挨着的之前的匹配有 0+ 次匹配机会。

    -

    4. 位置元字符 ^, $

    +

    4. 位置元字符 ^, $

    ^ 匹配字符串的最前面。
    $ 匹配字符串的最后面。

    -

    5. 字符组元字符 [ ], 连字符元字符 -, 补字号 ^

    +

    5. 字符组元字符 [ ], 连字符元字符 -, 补字号 ^

    [] 匹配方括号内的左右字符。
    \- 连字符元字符仅在字符组元字符内有意义,表示一段连续字符范围。
    ^ 表示排除某些字符。

    -

    6. 范围字符串 \\{ \\}

    +

    6. 范围字符串 \\{ \\}

    \\{n,m\\} 匹配 n~m 次。
    \\{n\\} 匹配 n 次。
    \\{n,\\} 匹配 n+ 次。

    -

    7. 特殊字符类

    +

    7. 特殊字符类

    [[:alpha:]] 匹配任意字母字符,大写或小写
    [[:alnum:]] 匹配任意字母数字字符,0-9, a-z, A-Z
    [[:blank:]] 匹配空格或制表符字符
    @@ -304,19 +304,19 @@

    [[:punct:]] 匹配任意标点
    [[:space:]] 匹配任意空白字符: 空格、制表符、NL、FF、VT、CR
    [[:upper:]] 匹配任意大写字符,A-Z

    -

    扩展元字符 (egrep, awk)

    -

    1. 加号元字符 +

    +

    扩展元字符 (egrep, awk)

    +

    1. 加号元字符 +

    其紧挨着的之前的匹配有 1+ 次匹配机会。

    -

    2. 问号元字符 ?

    +

    2. 问号元字符 ?

    其紧挨着的之前的匹配有 0~1 次匹配机会。

    -

    3. 竖线元字符 |

    +

    3. 竖线元字符 |

    r1|r2 匹配 r1 或 r2

    -

    4. 括号元字符 ( )

    +

    4. 括号元字符 ( )

    (r1) 匹配子字符串r1(常与 * + ? | 等连用)。

    -

    5. 范围元字符 { }

    +

    5. 范围元字符 { }

    与上面的范围元字符类似。

    -

    固定元字符 (grep)

    -

    1. \\< \\>

    +

    固定元字符 (grep)

    +

    1. \\< \\>

    严格匹配一个词(后面必须直接跟一个空格或标点符号)。

    参考:

      diff --git a/posts/2014-03-19-Linux-Notes-2/index.html b/posts/2014-03-19-Linux-Notes-2/index.html index a210b00f2..6576bb346 100644 --- a/posts/2014-03-19-Linux-Notes-2/index.html +++ b/posts/2014-03-19-Linux-Notes-2/index.html @@ -273,15 +273,15 @@

      -

      一、vim切换tab

      +

      一、vim切换tab

      向后 :tabn
      向前 :tabp

      -

      二、vim与系统剪贴板的交互 (仅限于gvim!!!)

      +

      二、vim与系统剪贴板的交互 (仅限于gvim!!!)

      "+y
      复制到剪贴板

      "+p
      从剪贴板粘贴

      -

      三、vim重复命令

      +

      三、vim重复命令

      .
      重复上次操作,前面可加次数

      :[range]g[lobal]/{pattern}/[cmd]
      @@ -290,13 +290,13 @@

      四、vim中tab与空格的转换 (慎用!!!)

      +

      四、vim中tab与空格的转换 (慎用!!!)

      :ret[ab][!] [new_tabstop]
      将制表符<TAB>转换为空格符,数量由[new_tabstop]指定。若为空或为0,则使用默认的tabstop
      若有!,则将空格序列转化为<TAB>

      -

      五、查看中文帮助

      +

      五、查看中文帮助

      man -L zh_CN.utf8 command

      -

      六、查看日志

      +

      六、查看日志

      journalctl [OPTIONS...] [MATCHES...]

      Options:

      1
      2
      3
      4
      5
      6
      -f --follow        Follow the journal
      --since=DATE Start showing entries on or newer than the specified date
      --until=DATE Stop showing entries on or older than the specified date
      -l --full Do not ellipsize fields
      -u --unit=UNIT Show data only from the specified unit
      --disk-usage Show total disk usage of all journal files
      diff --git a/posts/2014-04-20-Linux-Notes-3/index.html b/posts/2014-04-20-Linux-Notes-3/index.html index 8daa044cf..9477749b5 100644 --- a/posts/2014-04-20-Linux-Notes-3/index.html +++ b/posts/2014-04-20-Linux-Notes-3/index.html @@ -274,28 +274,28 @@

      ^[ 使用Ctrl-V Esc生成(ASC ASCII值)

      -

      二、开机自启动文件

      +

      二、开机自启动文件

      系统: /etc/rc.d/rc.local
      用户: $HOME/.config/autostart/

      -

      三、sed 替换中使用变量

      +

      三、sed 替换中使用变量

      sed替换命令用双引号" " 而不是单引号 ' ',然后里面直接用 $VARIABLE 就可以了。

      -

      四、vim 保存 root 权限文件

      +

      四、vim 保存 root 权限文件

      1
      :w !sudo tee %
      -

      五、vim 跳转

      +

      五、vim 跳转

      1
      2
      Ctrl+] = Ctrl+left\_click
      Ctrl+t = Ctrl+right\_click
      -

      六、从视频中提取音频

      +

      六、从视频中提取音频

      运行以下命令之一:

      1
      2
      3
      mencoder -oac mp3lame -ovc copy -of rawaudio 01.flv -o 01.mp3
      ffmpeg -i 01.flv -f mp3 -vn 01.mp3
      ffmpeg -i 01.flv -acodec libmp3lame -vn 01.mp3
      -

      七、交换 CapsLock 键和左 Ctrl 键

      -

      1. 使用 gnome-tweak-tool

      +

      七、交换 CapsLock 键和左 Ctrl 键

      +

      1. 使用 gnome-tweak-tool

      选择 Typing > Ctrl key position > Swap Ctrl and Caps Lock 即可。

      (要求 gsettings get org.gnome.settings-daemon.plugins.keyboard active 的值为 true,故在 gnome 中使用 fcitx 时此方法无法使用)

      -

      2. 使用 setxkbmap 命令

      +

      2. 使用 setxkbmap 命令

      运行

      1
      setxkbmap -option ctrl:swapctrl

      或者在 ~/.zshrc 中添加如下内容:

      1
      2
      3
      4
      # Swap Ctrl_L and CapsLock
      if [[ -n $DISPLAY ]]; then
      setxkbmap -option ctrl:swapctrl
      fi
      -

      八、交换 Escape 键和右 Alt 键

      +

      八、交换 Escape 键和右 Alt 键

      这时,前面两种方法都没有现成的选项可以使用,因此我们使用xmodmap

      建立 ~/.xmodmap,添加如下内容:

      1
      2
      3
      4
      5
      ! 交换Escape和Alt_R
      clear mod1
      keycode 9 = Alt_R NoSymbol Alt_R
      keycode 108 = Escape NoSymbol Escape
      add mod1 = Escape Meta_L
      diff --git a/posts/2015-08-20-Linux-Notes-4/index.html b/posts/2015-08-20-Linux-Notes-4/index.html index b36083cc3..c0f9f2e14 100644 --- a/posts/2015-08-20-Linux-Notes-4/index.html +++ b/posts/2015-08-20-Linux-Notes-4/index.html @@ -274,10 +274,10 @@

      -

      mplayer 循环播放歌曲

      +

      mplayer 循环播放歌曲

      1
      mplayer -loop n ***.mp3

      n 表示重复次数,0 表示无限循环。

      -

      vim 搜索大小写匹配

      +

      vim 搜索大小写匹配

      set ignorecase
      忽略正常字母的大小写

      set smartcase
      @@ -286,12 +286,12 @@

      cd 转移

      +

      cd 转移

      当两个目录路径只有一个区别(比如一个单词不同)时,这个是从旧目录切换到新目录的一种简单方法。

      1
      cd directorya directoryb

      第一个参数是当前目录路径中需要替换的参数,第二个参数是替换字符串。

      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      # 要从v7目录 切换到v8目录,只需键入cd v7 v8
      /programs/v7/reports/monthly > cd v7 v8
      /programs/v8/reports/monthly >

      # 如果历史上的每年每月都有一个对应目录,cd 转移允许从一年跳到另一年
      /hist/2010/april/reports > cd 2010 2011
      /hist/2011/april/reports >

      # 切换月份目录
      /hist/2011/april/reports > cd april may
      /hist/2011/may/reports >
      -

      vim 快速缩进

      +

      vim 快速缩进

      >>
      向右缩进

      <<
      @@ -302,7 +302,7 @@

      :ri (right)
      文本靠右

      -

      vim 编辑多个文件

      +

      vim 编辑多个文件

      :n
      编辑下一个文件

      :N
      @@ -319,7 +319,7 @@

      vim 加密文件

      +

      vim 加密文件

      $ vim -x file1
      创建加密文档 file1

      set cm=blowfish2 (newest)
      diff --git a/posts/2018-10-05-refactor-blog/index.html b/posts/2018-10-05-refactor-blog/index.html index f67950511..0d2ccdb35 100644 --- a/posts/2018-10-05-refactor-blog/index.html +++ b/posts/2018-10-05-refactor-blog/index.html @@ -278,7 +278,7 @@

      利用十一的时间,重新整理了一下个人博客的页面。

      看了一下,上一篇文章还是在 2015 年 8 月,到现在已经有三年多了,我真是。。。唉

      -

      入坑 Linux

      +

      入坑 Linux

      记得最早接触 Linux 是在 2012 年,当时是上计概课要写代码,于是心血来潮地在电脑上安装了 Fedora(话说那时 Fedora 的版本号才是 17),然后就掉进了 Linux 的坑里一去不复返。而注册 Github 的时间是在 2013 年 8 月 15 日,具体什么原因已经不记得了。。。

      后来想找一款能够听歌的软件,那时网易云音乐还没有出 Linux 版,FZUG 也还没有成立,我在网上偶然间发现了一款可以听歌、而且还是可以听网易云音乐的软件,那就是 kwplayer。看了下 commit,第一次提交是在 2013 年 8 月 29 号:inited。而我应该是在10月份的时候发现的,至于在哪儿找到的已经完全不记得了。

      还记得第一次提交 Issue 是 #11#12,当时只是发现 Github 上有个可以提交 Bug 的地方,于是就随手开了两个 Issue,没想到当天都得到了详细的回复,并在三四天后都得到了解决:9c21c4f90a02a8

      @@ -286,24 +286,24 @@

      入坑

      刚又看了一下,我在 copr 上最早的一次 build 是在 2014 年 3 月 31 号,而我能够找到的最早介绍 copr 的中文资料是 Fedora Copr,现在的 copr 网址上线是在 2013 年 12 月, FZUG 的 mosquito 也是从 2014 年 6 月才开始建立他的 myrepo 的,话说国内比我更早开始使用 copr 的应该不多吧。。。

      话说那时 XuShaohua 的 Github 账户名还是叫 LiuLang,后来他去了 Deepin,网易云音乐的 Linux 版他应该是作者之一。

      当然后来因为各种原因我不再维护我的 copr 仓库,包括犯懒(反正有了 mosquito 的 myrepo 源,以及后来的 FZUG 源)、Fedora 的习惯性跳票让我非常不爽(这是在找借口么。。。)等等,加上后来我从 Fedora 转到了 Arch Linux 上(大概是 2015 年暑假吧),这个仓库就彻底荒废了。

      -

      博客的建立

      +

      博客的建立

      最早的一些记录文章我都发在了 QQ 空间里,显得格格不入的。后来就想找一个合适的可以放这些东西的地方。

      期间考虑过 WordPress,不过觉得比较麻烦,还需要有地方托管;考虑过一些博客托管平台,不过没有找到太喜欢的;觉得 Blogger 不错,但又被 W 掉了。。。

      后来看到阮一峰的的介绍文章:搭建一个免费的,无限流量的Blog----github Pages和Jekyll入门,觉得这是个不错的选择,于是就开始折腾 Github Pages。作为一个审美盲与选择困难症患者,在众多的 Jekyll 主题中完全不知道该怎么选择,于是就随手选了一个自己觉得比较简洁明了的,也就是 ellochen 的博客主题,直接 copy 过来就用了。

      嗯,说好听点叫简洁,说不好听呢就叫难看。。。😭

      话说 ellochen 的 Github 账号已经不存在了,貌似是已经注销了,但好在还存留有 Fork(话说这就是 Fork 相较于 Star 的好处吧,我之前也有一些被删的 repo 是这么存留下来的,嗯,我指的不是 phuslu 大神,指的是垠神。。。),豆瓣小站 Gode-Mode 貌似是他建立的。

      -

      博客的重构

      +

      博客的重构

      在那之后,博客的页面也小幅修改过几次,但大的主题方面都没有变过。曾经有想过重新选一个更好看的主题,但碍于时间原因一直没有去做。
      期间也在其他的 Page 中也曾经尝试过其他的主题,比如 HMFAYSAL OMEGA,整体不错,但有些华而不实了;也试过 coleslaw,但又太过简单了。

      直到第一次看到 NexT 主题,就像这个,真的把我惊艳到了,流畅的载入动画,自动展开并追随页面更新的目录,再加上简洁没有多余内容的页面,完全符合我对自己的博客的预期啊。于是最终决定就用这个主题了。

      不过 NexT 的主页 theme-next.org 目前显示 Under Construction,没有最新的文档只有根据旧文档、网上的教程还有源代码自行摸索,网上很多教程和解决方案都是过时的,只好自己边做边摸索了。

      然后发现,NexT 的配置又有一大堆,这简直就是在为难选择困难症的患者啊。。。

      -

      方案选择

      +

      方案选择

      NexT 主题总共有 4 种方案:Muse,Mist,Pisces 和 Gemini,为选哪一个我纠结了有近 1 个小时,对比各个博客样例,又在本地挨个试了好几遍,去找它们的不同点。最后发现,Muse 和 Mist 可以算一类,目录都在右侧,可以选择动态载入,也可以选择直接显示或隐藏。Muse 的布局相对宽松一点,顶部标题栏也比较大;Mist 相对紧凑一点,所有标题和标签都放在了最顶上的一栏里。而 Pisces 和 Gemini 又可以算一类,目录和标题栏恒在左边,右边是正文,Pisces 的页面和前两个比较相似,纯黑白布局,连贯性很强;而 Gemini 则更传统一些,每篇文章之间分的清清楚楚。

      最终我选择了 Gemini 方案,原因是我觉得目录的动态载入虽然显得比较高级,但文章整体左移的那一下还是显得有些晃眼了,而且目录在右、正文在左的布局让我有些不太习惯;而不用 Pisces 的原因则是文章之间没有明显的分界线,文章中的小标题也不是很显著,于是最后暂定了 Gemini 方案。(嗯,暂定,说不定那天我有回来打自己的脸了)

      -

      插件

      +

      插件

      应该说,折腾这些插件是最费时间的,不但要面临各种选择,还要面临选完了发现用不了然后又得换的状况。。。有些插件本身有问题,需要手动修改才能使用,有些则根本不知道该怎么改。。。

      -

      数学

      +

      数学

      数学公式的渲染最开始是打算用 MathJax,和以前保持一致就可以了。本来没有问题,但后来在利用 Travis-CI 自动部署的时候发现,远程安装的 pandoc 的版本不对,没有办法正确渲染,又找不到解决的办法,于是只能弃之而选择 katex。katex 其实我之前就听说过,据说比 MathJax 要快很多(公式一多的话 MathJax 确实太慢了),不过现在 0.10.0-rc1 的版本。由于前面的几篇文章里面还没有数学公式,我还没有真正试验过。

      另外吐槽一句,npmjs 上的 hexo-renderer-markdown-it 的版本太老了,直接安装 Github 上的版本就可以了,这个插件已经更新了,但仓库里的模块还没有更新。

      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      15
      16
      17
      18
      19
      20
      $ cat package-lock.json | jq .dependencies.\"hexo-renderer-markdown-it\"
      {
      "version": "github:hexojs/hexo-renderer-markdown-it#89a5abe048f5a43b42328ad012fb445ded6e665b",
      "from": "github:hexojs/hexo-renderer-markdown-it",
      "requires": {
      "lodash.assign": "^4.2.0",
      "markdown-it": "^8.4.1",
      "markdown-it-abbr": "^1.0.4",
      "markdown-it-cjk-breaks": "^1.1.0",
      "markdown-it-container": "^2.0.0",
      "markdown-it-deflist": "^2.0.3",
      "markdown-it-emoji": "^1.4.0",
      "markdown-it-footnote": "^3.0.1",
      "markdown-it-ins": "^2.0.0",
      "markdown-it-mark": "^2.0.0",
      "markdown-it-sub": "^1.0.0",
      "markdown-it-sup": "^1.0.0",
      "sluggo": "^0.2.0"
      }
      }
      @@ -312,30 +312,30 @@

      数学

      才行。

      不过我不喜欢一点进来就到文章半截的模式,所以对我来说没有什么影响,还是乖乖地写 description 吧。

      另外这一部分文档严重不足,只能看自带 wiki 和 markdown-it 的例子来写。

      -

      评论

      +

      评论

      关于评论模块,暂时还是采用了 Disqus 的评论系统,好处是不用折腾,因为是以前就配置好的,直接用就可以了,而且功能也足够强大,不过也有几个问题:

      • 必须登录才能评论。不过我看到有文章说 Disqus 现在支持匿名评论了,有时间再去看一下。
      • 被 W。这个是最主要的问题,目前看来解决方案有两个,一个是利用其他的服务器转发一下,例如 fooleap/disqus-php-api,另一个是换用其他的评论系统,比如 gitment/gitalk 或者 Valine,不过这次没有时间在折腾了,留待有时间再解决吧。
      -

      Pangu

      +

      Pangu

      这是一个不错的模块,来自与 pangu.js,可以在英文和中文之间自动加入空格,让中英文的混排看起来更舒服一下。

      -

      Han

      +

      Han

      汉字排版模块,可以调整中文页面的布局,提供了着重号、拼音上标等功能,来自 Han。 我比较看中的着重号的功能,因为在英文中,强调使用斜体表示的,就像emphasize这样,而中文一旦斜体就会变得非常难看。因此如果用着重号的话会好看很多。

      不过这个插件折腾了我足足半天,原始的 css 文件能够加着重号,但是会把页面变得非常拥挤;theme-next-han 里的 css 文件倒是不会改变页面布局,但是着重号的功能却没有了。于是我去翻了源代码,然后发现,为了解决 #1645#1780 把很多有用的内容也删掉了,问题倒是解决了,但剩下的基本上就没有什么作用了。于是我又去翻了 Han 的源码,发现只要把 well-knit 模块禁掉就可以了,于是又生成了新的 han.min.css 文件,使之能够正常显示。

      话说我这篇文章写了得有两天的时间,中间有大一部分时间就是去弄这个了。

      -

      canvas-nest

      +

      canvas-nest

      背景动态渲染,来自 canvas-nest.js。以前看别人的博客遇到这个觉得很好玩,于是这次自己也就加上了。

      不过遗憾的是,Gemini 的博文部分是不显示背景的,好像是把底层背景覆盖了。试了一下四种方案,好像只有 Gemini 是这个样子。。。

      -

      note

      +

      note

      可以插入提示块,效果如 在hexo-NexT中插入note提示块 中所示,还是很有用的。不过在文档中完全没有提到,要不是仔细翻看配置文件根本发现不了。

      -

      reading-progress

      +

      reading-progress

      可以在最上方显示阅读的进度条,以前也用过,这次也就加上了。

      -

      自动部署

      +

      自动部署

      关于 GitHub Pages 的部署,我将源代码存储在 source 分支,然后利用 Travis-CI 自动构建并部署到 master 分支。具体看参见 使用Travis CI自动部署Hexo博客,基本上 copy 过来就可以了。

      另外,我的主题是 Fork 的 Next 的主题,然后在上面进行修改,在用 git submodule 引入进来,结果好几次自动部署失败都是因为修改完主题之后忘记 push 了。。。

      而 GitLab Pages 的部署则要简单许多,只需要照着官方的例子写一个 .gitlab-ci.yml 文件就可以。

      -

      待改进的部分

      +

      待改进的部分

      还有一些部分模块这次没有时间弄了,留着下次有时间再解决吧。一部分现在能想到的我先列举在这里,省得以后又忘了:

      • 字数统计
      • diff --git a/posts/2018-10-29-Hexo-NexT-1/index.html b/posts/2018-10-29-Hexo-NexT-1/index.html index 5aa0a11e2..bfa9672cf 100644 --- a/posts/2018-10-29-Hexo-NexT-1/index.html +++ b/posts/2018-10-29-Hexo-NexT-1/index.html @@ -272,16 +272,16 @@

        最近一个月,空余的时间都用来折腾这个博客了。作为一个本身对前端一窍不通的人,也是都能对照文档和其它的博客来修改自己博客的配置,真是心累的不行。虽然很多问题在网上都能够找到比较好的解决方法,但也有很多内容完全是过时的,也有一些藏得比较深,不是那么好找。

        于是决定趁着还有印象的时候,把自己折腾的过程记录下来,不要像之前一样,自己写的东西,过了一年之后自己都记不起来当时是怎么想的了。。。

        -

        包管理

        +

        包管理

        开始一直在使用 npm 来安装依赖包,还为是否应该把 package-lock.json 添加的 git 仓库查找了半天。直到很偶然的一次,突然发现还可以用 yarn 来管理一来包,看了一下感觉不错,于是决定切换到 yarn。

        然后发现,我的 git 仓库里居然已经有了 yarn.lock 这个文件,什么???

        再去搜索才发现,yarn 很早就作为 hexo 的默认包管理器了,只要系统有安装 yarn 的话,就采用 yarn 而不是 npm 作为包管理器。

        然而在网上能够找到的大部分教程中,安装依赖包还都是用 npm,而且还都带着 --save 的参数。我开始不知道有什么作用,然后一搜索,发现这个参数早就过时了,从 npm 5.0.0 之后就已经不需要了,只是为了兼容性还保留着这个参数。

        -

        启用搜索功能

        +

        启用搜索功能

        参见 Hexo NexT 魔改系列之二 ── 搜索篇

        -

        启用评论功能

        +

        启用评论功能

        参见 Hexo NexT 魔改系列之三 ── 评论篇

        diff --git a/posts/2018-10-29-Hexo-NexT-2/index.html b/posts/2018-10-29-Hexo-NexT-2/index.html index 189ce3ebb..a787b190e 100644 --- a/posts/2018-10-29-Hexo-NexT-2/index.html +++ b/posts/2018-10-29-Hexo-NexT-2/index.html @@ -273,7 +273,7 @@

        Next主题本身集成了三种搜索插件:Swiftype,Algolia和本地搜索。

        Swiftype只能试用14天,Aloglia好像也开始收费了(更新:社区版免费,但有限制),能有的就只有本地搜索了。

        不过好在目前博客的文章还不算多,本地搜索还是可以承受的。

        -

        启用本地搜索

        +

        启用本地搜索

        启用本地搜索的方法很简单,先安装hexo-generator-search

        注意不是hexo-generator-searchdb,前者来自于wzpan/hexo-generator-search,而后者来自于theme-next/hexo-generator-searchdb。后者已经一年多没有更新了,而前者还在更新,并且增加了仅搜索标题的功能。

        1
        yarn install hexo-generator-search
        @@ -290,14 +290,14 @@

      • field是搜索的范围,默认是post,即只搜索发布的文章,也可以改为page(搜索页面,即 page 类型的页面,不含发布的文航)或者all(搜索全部)
      • content是指是否搜索文章的内容,默认为true,如果改为false的话则只搜索标题、说明等头部内容,不搜索文章的正文。
      -

      解决能够正常搜索,但无法正常跳转的问题

      +

      解决能够正常搜索,但无法正常跳转的问题

      这样配置完了之后,我发现搜索功能没有问题,但搜索出来的结果没有办法正确跳转。查看了一下生成的search.xml,发现生成的链接多了一个/,就像这样:

      1
      2
      <link href="//posts/2018-10-24-prime-of-the-form-6k1/"/>
      <url>//posts/2018-10-24-prime-of-the-form-6k1/</url>

      不过在各个教程中都没有找到相应的解决方法,最后在翻issue的时候发现了一个方法,就是在搜索的时候直接去掉一个/就好了。
      修改localsearch.swig的源代码:

      1
      2
      // var articleUrl = decodeURIComponent(data.url);
      var articleUrl = decodeURIComponent(data.url).substring(1);

      真的是简单粗暴啊。。。

      -

      启用Algolia搜索(待更新)

      +

      启用Algolia搜索(待更新)

      最近发现,Agolia搜索的社区版还是免费的,不过暂时本地搜索已经够用了,就不再折腾搜索功能了,留待以后有时间再折腾吧。

      参见主题自带的文档:Algolia 搜索

      diff --git a/posts/2018-10-29-Hexo-NexT-3/index.html b/posts/2018-10-29-Hexo-NexT-3/index.html index 60aa7f7a7..b29b2e41d 100644 --- a/posts/2018-10-29-Hexo-NexT-3/index.html +++ b/posts/2018-10-29-Hexo-NexT-3/index.html @@ -305,7 +305,7 @@

      关于gitment的安全性的讨论,参见imsun/gitmentGitment 的安全性争议

      -

      添加utterances评论系统

      +

      添加utterances评论系统

      在搜索gitment的时候,发现了一片utterances的介绍文章,发现这是一个好东西,同样是基于Github的issue系统,但由于是基于Github App构建的,权限控制的颗粒度要细一些,可以只具有读写issue的权限,不需要读写代码的权限,而且可以只在需要的repo中安装。这才是一个合格的评论系统应该有的权限嘛。

      utterances的权限
      DisqusJS
      @@ -324,9 +324,9 @@

      utterance默认不会创建issue,而是会在第一次评论的时候自动创建相应的issue,这个也比gitment好用不少。

      -

      使用 Disqus PHP API 进行反代理

      +

      使用 Disqus PHP API 进行反代理

      待更新

      -

      使用 Valine 作为评论系统

      +

      使用 Valine 作为评论系统

      参见:
      Valine: 独立博客评论系统
      diff --git a/posts/2019-09-04-Tai-1/index.html b/posts/2019-09-04-Tai-1/index.html index 710e71ee4..45dffcb31 100644 --- a/posts/2019-09-04-Tai-1/index.html +++ b/posts/2019-09-04-Tai-1/index.html @@ -289,7 +289,7 @@

      后来看了太くないお的介绍,感觉我现在的牌风和太くないお很相似,于是决定看他的牌谱。

      由于太くないお是天凤位,升天凤位之前的牌谱可以从天凤官网上直接下载下来。太くないお升天凤位前凤南对战3749战,当然不可能全看,于是我选择了他十段升天凤位的牌谱来看,一共301战。这个时候他的水平也相对比较稳定了,牌谱看起来失误率也会小一些。

      打谱的时候,很开心地发现大部分时候自己的选择都是对的,当然也有一些没有注意的地方,这里拿出来分析一下。

      -

      副露加速

      +

      副露加速

      东2局0本场5巡目

      这是东二局。东一局胡了一个立直一发2600点,东二局下家和对家一上来就开始副露,才到5巡两家就都三副露了。基本上面对三副露,就可以认为都已经听牌了。这时上家打了7p。

      这里太くないお直接吃了这个7p后付,应该主要是考虑手牌的速度。如果不后付的话,这个发很难碰出来,因为发是dora,很有可能直接被人捏死(比如上家就捏了一张发)。所以等到碰出发再考虑听牌,就有些晚了。

      @@ -297,7 +297,7 @@

      副露

      东2局0本场9巡目

      不过最终还是先摸3m点了对家。不过3m基本上就是铳双东2000点(除非对家有两张3s),而自家是发dora4满贯的听牌,对日还是没有问题的。

      下家因为先打过1m,后面如果留1m打6m的话会有振听,从而逃过一劫。。。

      -

      牌效率问题

      +

      牌效率问题

      东3局0本场9巡目

      这是东三局9巡,一向听之后上来3s。这里我第一反应是3s模切,但太くないお选择打掉了4p。这是牌效率的问题。

      天凤/牌理

      @@ -305,7 +305,7 @@

      何切る解答機

      如果去查一下kobalab的何切,也会发现,打4p的权重是最高的。

      实际上,接下来下家立直,然后自家摸上8p听牌,因为只有一张4p的两筋,加上自己是四位,dora东也已经出了,所以就直接追立了。最终自摸0m,门胡到了断平dora1的7900点,一举逆一。

      -

      谋求连庄

      +

      谋求连庄

      东4局0本场7巡目

      这是东四局的亲家,7巡是已两向听,进到9m后我的第一反应是打4m,而太くないお则打掉了东。

      这个是简单的牌效率的问题,打4m损失了5m的进章。而且这里是平和dora1的2向听,这时对家和上家还在打幺九牌,下家的牌要快一些(事实上已经一向听了),加之自己是亲家,这里不留字牌全速进攻是没有问题的。

      @@ -314,17 +314,17 @@

      谋求

      这里上家打了3p,于是吃了打9m,谋求兜听连庄。

      东4局0本场13巡目

      然后上家又打9p可以吃,但是7p并不是安牌,而且是dora周边的牌,没法打出去。但这里需要注意到的是,8s是安牌可以打,于是可以吃到9p打8s单调7p。这里特别需要注意,我们需要的是听牌连庄,而不是胡牌,所以不用考虑听牌的形状,只要不打危险牌然后争取流局听牌就可以了。

      -

      别忘了被吃碰的牌

      +

      别忘了被吃碰的牌

      南2局0本场12巡目

      南二局,处于四位的上家6巡立直,太くないお随即弃胡。到了12巡的时候,手头没有绝安牌了。于是太くないお打了4p。

      我的第一反应是,4p只是半筋啊。然后再仔细一看,3p出了3枚,5p出了3枚,6p出了2枚,所以4p是1p的半筋+的5p的薄壁,安全度还是不错的。

      再看了一会儿,发现上家打过7p我吃了,所以4p实际上是个两筋。。。

      为什么每次找牌都会放掉打出去被吃碰掉的牌,诶。。。

      -

      拆边张搭子

      +

      拆边张搭子

      南3局0本场5巡目

      进到6p,于是四连型5678p变成好型搭子,于是要拆掉一个愚型搭子。那么拆边张的优先度肯定是要大于拆坎张的。而且在拆边张的时候,一般是由内向外打,先打2p再打1p,因为到后面,无筋1p的铳率是要低于2p的。

      而我的第一反应还是打1p,平时在打牌的时候也会犯这样的错误,每次都是刚打完就发现打错了。。。

      -

      总结

      +

      总结

      回顾这一个半庄,基本上出现失误的地方都是在细节的判断上,这也是后面打牌是需要加强的地方.

      diff --git a/posts/2019-09-10-Tai-2/index.html b/posts/2019-09-10-Tai-2/index.html index 0b02aa854..8dbba85dc 100644 --- a/posts/2019-09-10-Tai-2/index.html +++ b/posts/2019-09-10-Tai-2/index.html @@ -276,13 +276,13 @@

      今天又看了一些太くないお的牌谱,发现自己的牌效和攻守判断有不小问题。

      -

      两面·顺子⚪单骑

      +

      两面·顺子⚪单骑

      东3局1本场7巡目

      上家打0p,这里太くないお吃了,打1m。

      这里1m比打2m略优,因为245667m可以视为一个三面进章的好型,进358m都可以形成两个面子。

      之前看《琴南幼儿园笔记本》时,里面也提到了这种牌型,就是“两面·顺子⚪单骑”是一个好型,这里即是一个例子

      两面·顺子⚪单骑

      -

      对子的处理

      +

      对子的处理

      南1局1本场6巡目

      这里我的第一反应是模切7p,而太くないお则是手切了4m。

      这里切4m并不损失5m的进章,保留7p则可以保留做7对的可能性。

      @@ -292,12 +292,12 @@

      而根据“双雀头最强”的理论(2ヘッド理論),这里保留7p和2s两个雀头牌效是最高的。

      南1局1本场9巡目

      之后又进到了7m,这里切7p比且切7m略好一点。因为这里打掉7p之后,减少了2枚7p的进张,多了67m共3枚进张。另外需要注意的是,这时58p已现4张,虽然还是两面听牌,但已经和愚型听牌差不多了。

      -

      防守的意识

      +

      防守的意识

      南2局0本场10巡目

      2巡前下家碰4s打红中,然后上家碰了中打6m。这里我还在考虑切9p进攻的时候,太くないお直接打了8p防守。

      仔细想一下,已经到了中盘,下家断幺副露后切了字牌,之后一直模切,应该有50%的概率听牌,至少也是一向听。上家也是类似的情况。而这里自家的手牌还是2个愚型的3向听,因此这里的确应该考虑弃胡了。

      实际上,这里下家是断幺Dora2的一向听,而上家已经是中Dora2听牌。

      -

      总结

      +

      总结

      从自己打牌的经历来看,对于防守的判断还停留在有人立直才防守的层面上,对于其他情况,比如副露的防守还不是很有意识。

      另外,当自己的牌不好的时候,就应该提前考虑弃胡,而不是强行进攻,这点在之后打牌的时候务必要注意。

      diff --git a/posts/2019-09-14-Paipu-review-2/index.html b/posts/2019-09-14-Paipu-review-2/index.html index 1bb45eb5b..f6570bd19 100644 --- a/posts/2019-09-14-Paipu-review-2/index.html +++ b/posts/2019-09-14-Paipu-review-2/index.html @@ -278,24 +278,24 @@

      今天终于有时间,打了两把雀魂,吃了两个二。

      -

      遇dora弃胡

      +

      遇dora弃胡

      南2局0本场12巡目

      上家6巡立直,自家随后听牌,听的是上家的现物47p,而且只有平和一番,dora 2s一张未现,于是没有立直,准备看看有没有可能偷到现物。

      之后几巡都没有摸到太危险的牌,打过一次筋3s,然后摸到了dora 2s。何切?

      对家在一发巡的时候打过5s,所以2s不可能铳两面。只能铳坎13s、2s对碰或者2s单骑。一旦铳到后两个,则至少是立直dora2/3起,至少3900甚至很可能满贯,而自家只是1000点手牌,显然达不到对日的标准,于是这里只能选择弃胡。

      南2局0本场18巡目

      实际上,上家正是单听2s,如果点了就是立直七对dora2的满贯12000点,那么就给了三位逆二的机会。

      -

      弃胡or进攻

      +

      弃胡or进攻

      东1局0本场11巡目

      这里面对下家十二落抬,摸上生牌9s,是否要弃胡?

      我当时的选择是弃胡,最终流掉了这一把。但事后仔细想一下,下家虽然是四副露听牌,但如果打9s点了,只会是1600点的牌。而自家是平和dora3的一向听,满贯的手牌,因此完全可以和下家对日。

      -

      进攻or弃胡

      +

      进攻or弃胡

      东4局0本场7巡目

      这里连送上家三个碰牌,之后上家打东。这里是碰东进攻,还是直接弃胡?

      我当时的选择是碰东进攻,主要考虑到自家是东dora dora,3900的牌,而上家很可能只是一个对对。当然上家也有可能是对对dora2/3的牌,毕竟8s一张未现。这里其实是有些冲动了,因为连续喂了上家三张牌,心情有些不好,于是就直接冲上去了。

      东4局0本场13巡目

      不过最终还是自摸了2000-1000,赢下了这局。(而上家还在1向听。。。)

      -

      1安≈无安,无安=全攻

      +

      1安≈无安,无安=全攻

      南3局0本场7巡目

      下家立直,这里只有一张5s是安牌,是打5s弃胡,还是直接进攻?

      这里自家3位,下家4位,下家立直后与自家只差1400点,如果下家胡到的话,自己就会四位进入南四,那么All last就必须要胡牌才能避四。

      @@ -304,7 +304,7 @@

      南3局0本场8巡目
      南3局0本场8巡目

      这里实际上按照牌效应该切6/9m,切6m保dora,切9m有断幺,实际上是番数一样的。从安全度上来说,切6m的危险度更高一点,但切9m点了的话会损失会更大一些。但考虑到断幺之后可以吃碰,这里感觉切9m会更好一些。

      -

      什么叫做“发牌姬搞我”(下家)

      +

      什么叫做“发牌姬搞我”(下家)

      东2局2本场7巡目
      东2局2本场12巡目

      上家立直,下家摸到第四张4p,然后开始弃胡。

      五巡之后,下家已经没有安牌了,于是考虑能否打一个半筋4p,然后一搏四巡——然后就点了一个坎4p。。。

      diff --git a/posts/2019-12-10-2019-Canada-MO-P2/index.html b/posts/2019-12-10-2019-Canada-MO-P2/index.html index 170081aeb..3f8ff9974 100644 --- a/posts/2019-12-10-2019-Canada-MO-P2/index.html +++ b/posts/2019-12-10-2019-Canada-MO-P2/index.html @@ -270,12 +270,12 @@

      -

      题目

      +

      题目

      aabb 为正整数,且满足 a+b3a+b^3 能被 a2+3ab+3b21a^2+3ab+3b^2-1 整除.求证:a2+3ab+3b21a^2+3ab+3b^2-1 能被一个大于 11 的整数的立方整除.[1]

      -

      分析

      +

      分析

      根据题目中 a2+3ab+3b2a^2+3ab+3b^2 的形式,容易看出应该和 (a+b)3(a+b)^3 有关系,从而可以证出 (a+b)3(a+b)^3 能被 a2+3ab+3b21a^2+3ab+3b^2-1

      而本题的难点在于如何证明 a2+3ab+3b21a^2+3ab+3b^2-1 有次数不小于 33 的因子.这里使用了反证法,并对要证明的结论进行了加强,把证明 a2+3ab+3b21a^2+3ab+3b^2-1 中素因子的次数大于 22,转化为证明其大于 (a+b)(a+b) 中对应的素因子的次数的 22 倍,从而更容易导出矛盾.

      -

      解答

      +

      解答

      T=a2+3ab+3b21T=a^2+3ab+3b^2-1,则

      (a+b)3=a3+3a2b+3ab2+b3=a(a2+3ab+3b2)+b3=a(T+1)+b3=aT+(a+b3) \begin{aligned} \left( a+b \right)^3 &= a^3+3a^2b+3ab^2+b^3 \\ diff --git a/posts/2019-12-11-Envolope-and-parabola/index.html b/posts/2019-12-11-Envolope-and-parabola/index.html index 6e3b0f5b6..dd3c91f6e 100644 --- a/posts/2019-12-11-Envolope-and-parabola/index.html +++ b/posts/2019-12-11-Envolope-and-parabola/index.html @@ -298,9 +298,9 @@

      显然,这个学生的错误是很明显的.但这也带来了一个问题:如果按照学生所想的,那么面积应该是多少?

      那么首先需要确定的是,它的边界到底是什么?

      -

      边界曲线

      +

      边界曲线

      我们只考虑第一象限的情况.

      -

      解法一

      +

      解法一

      这个区域的边界,应该是取最靠外的点,或者是,最靠上的点.于是我们可以想办法求出,在每一个 xx 处,对应的 yy 的最大值.

      设线段的方程为

      xa+y3a=1(1)\frac{x}{a}+\frac{y}{3-a}=1 \tag{1} @@ -394,7 +394,7 @@

      解法一.(2)

      -

      解法二

      +

      解法二

      实际上,这个边界是所有满足条件的线段的包络线

      设线段所在直线的方程为

      F(x,y,a)=(3a)x+aya(3a)=a2(xy+3)a+3x=0\begin{aligned} @@ -415,7 +415,7 @@

      解法二其图像如下:

      可以验证,方程 (3)(3) 和我们前面求出的方程 (2)(2) 是一致的.

      -

      解法三

      +

      解法三

      设直线方程同解法二,注意到对于每一个 (x,y)(x,y),有且仅有一个 aa 满足条件.于是有

      Δ=(xy+3)212x=0 \Delta=(x-y+3)^2-12x=0

      @@ -424,7 +424,7 @@

      解法三此解法的出处
      此处称该曲线为绣曲线,但我只在此处和中文维基百科的包络线里面见到了这个名词.目前还不清楚这是否是通用的名词.

      -

      围出的面积

      +

      围出的面积

      第一象限所求的面积,就相当于边界和 xx 轴所夹的面积,因此

      S=03(3+x+23x)dx=[3x+12x2+2323(3x)32]03=9+4.5+4=22.5\begin{aligned} S &= \int_0^3 \left(3+x+2\sqrt{3x}\right)\mathrm{d}x \\ @@ -445,7 +445,7 @@

      c-6,0,-10,-1,-12,-3s-194,-422,-194,-422s-65,47,-65,47z M834 80h400000v40h-400000z'/>)dx=[3x+21x2+3232(3x)23]03=9+4.5+4=22.5

      于是四个象限的区域面积一共是 22.5×4=9022.5\times 4=90

      -

      曲线的类型

      +

      曲线的类型

      很明显,这是一条二次曲线的一部分.经过仿射变换

      {x=xy=xy+3 \begin{cases} x'=x \\ @@ -506,11 +506,11 @@

      c-6,0,-10,-1,-12,-3s-194,-422,-194,-422s-65,47,-65,47z M834 80h400000v40h-400000z'/>

      于是原抛物线的焦点是 (32,0)\left(\dfrac{3}{2},0\right),准线为 y=xy=x

      -

      问题拓展

      +

      问题拓展

      在高中学习抛物线的时候,有这样一道题目:

      对于抛物线 y2=2pxy^2=2px,过点K(p2,0)K\left(-\dfrac{p}{2},0\right) 作抛物线的两条切线,切点分别为 AABB,过抛物线在两切点之间的部分上的任意一点,作抛物线的切线,分别交 KAKAKBKBMMNN,求证: KM+KN\left|KM\right|+\left|KN\right| 为定值.

      -

      证明

      +

      证明

      抛物线在 (x0,y0)\left(x_0,y_0\right) 处的切线是 MN:y=py0(x+x0)MN: y=\dfrac{p}{y_0}\left(x+x_0\right).易知经过 KK 的两条切线的方程为 y=±(x+p2)y=\pm\left(x+\dfrac{p}{2}\right),从而可解得交点的纵坐标为 yM,N=p2x0±1y0py_{M,N}=\dfrac{\dfrac{p}{2}-x_0}{\pm 1-\dfrac{y_0}{p}},因此

      KM+KN=2yMyN=2p\left|KM\right|+\left|KN\right|=\sqrt{2}\left|y_M-y_N\right|=\sqrt{2}p

      为定值.

      -

      与前面的联系

      +

      与前面的联系

      其实仔细观察一下就会发现,抛物线这道题里面的 MNMN,就是我们方程 (1)(1) 所对应的线段,所有满足条件的 MNMN 的包络线就是抛物线在 AABB 之间的部分!

      diff --git a/posts/2020-04-01-Two-squares-1/index.html b/posts/2020-04-01-Two-squares-1/index.html index cd04d4d80..62d2854ba 100644 --- a/posts/2020-04-01-Two-squares-1/index.html +++ b/posts/2020-04-01-Two-squares-1/index.html @@ -294,7 +294,7 @@

      在正方形的题目中,有很常见的一类是和两个正方形有关的图形,如下图:

      图1

      在这个图形中,有很多有意思的性质,也衍生出了很多的题目.我们讲分几次一一道来.

      -

      「手拉手」模型

      +

      「手拉手」模型

      在学习全等的时候,我们知道有一类很重要的全等模型——旋转全等模型,俗称「手拉手」模型.说的是两个共顶点且顶角相等的等腰三角形,一定伴随着一组旋转全等,如图2

      图2

      ABC\triangle ABCADE\triangle ADE 是两个顶角相等的等腰三角形,易证 ABDACE\triangle ABD \cong \triangle ACE .这是一个旋转全等,旋转角度等于两个等腰三角形的顶角角度.

      @@ -302,11 +302,11 @@

      ABEABEACGACG 的「手拉手」,于是就有 ABGAEC\triangle ABG \cong \triangle AEC,而且旋转角度为 9090^\circ

      图3

      于是,我们就得到了一个对角线垂直且相等的四边形 BCGEBCGE

      -

      和中点四边形相关的问题

      +

      和中点四边形相关的问题

      熟悉中点四边形的朋友马上就会想到,这样一个四边形的中点四边形一定是一个正方形,也就是下面这个图:

      图5

      在这个图中,中点四边形 MPNQMPNQ 就是一个正方形.

      -

      另一个和中点相关的问题

      +

      另一个和中点相关的问题

      图1中,如果我们取 EGEG 的中点 PP ,连结 APAP ,则 APBCAP \perp BCAP=12BCAP = \dfrac{1}{2} BC.(如果取 BCBC 中点,有类似的结论)

      图5

      对于中点问题,我们知道一种常见的处理方法就是「倍长中线」,因此我们倍长 APAPHH,可以证明 GHAABC\triangle GHA \cong \triangle ABC.注意这是一个旋转 9090 ^\circ 的全等,因此 AHAHBCBC 垂直且相等,所以上面的结论成立.

      @@ -324,13 +324,13 @@

      变形一

      +

      变形一

      前面我们说了 BCGEBCGE 是一个对角线垂直且相等的四边形,因此,这个题的可以这样来出:

      图8,在四边形 ABCDABCD 中,ACBDAC \perp BD,且 AC=BDAC=BD,分别取 ADADBCBCABAB 的中点 MMNNPP,分别过 MMNNADADBCBC 的垂线交于 OO,则 POCDPO \perp CD

      图8

      这个图如果把 OAOAOBOBOCOCODOD 都连起来,显然有 OACOBD\triangle OAC \cong \triangle OBD,注意这是一个旋转 9090^\circ 的全等,因此 OAD\triangle OADOBC\triangle OBC 都是等腰直角三角形.于是这就变成了图5一样的图了,后面的证明和上面相同.

      图9 -

      变形二

      +

      变形二

      如果我们把两个正方形中间再加一个小正方形,那么结论会变成什么样子?

      图10,有三个正方形 ABCDABCDAEFGAEFGFHIJFHIJ,取 JDJD 中点 PP,则有 PEBHPE \perp BHPE=12BHPE = \dfrac{1}{2} BH

      图10 @@ -340,7 +340,7 @@

      变形二如图11,我们倍长 EPEPKK,可以类似地证明 JKEGBH\triangle JKE \cong \triangle GBH

      不过在证明的时候需要注意,这里面隐藏着两个「手拉手」的全等模型,在证明上面的全等的时候需要用到,如图12,有 ADEABG\triangle ADE \cong \triangle ABGFJEFGH\triangle FJE \cong \triangle FGH,都是旋转 9090^\circ 的全等.

      图12 -

      拓展联想

      +

      拓展联想

      在圆的内接四边形中,有一个类似的结论:

      若圆内接四边形的对角线相互垂直,则垂直于一边且过对角线交点的直线将平分对边.

      这就是 Brahmagupta 定理,一般译作「婆罗摩笈多定理」,或者「布拉美古塔定理」.

      diff --git a/posts/2020-04-03-Two-squares-2/index.html b/posts/2020-04-03-Two-squares-2/index.html index 2dde86f0d..201a012cc 100644 --- a/posts/2020-04-03-Two-squares-2/index.html +++ b/posts/2020-04-03-Two-squares-2/index.html @@ -299,15 +299,15 @@

      图2

      我们注意到,这个图形只跟下半部分(或者上半部分有关),因此这类题目经常以两个「等腰直角三角形」的形式出现,如图3

      图3

      -

      证明方法

      +

      证明方法

      这个题的解决方法也有很多,可以用「倍长中线」,可以构造「三角形的中位线」,也可以构造「梯形中位线」.

      -

      倍长中线

      +

      倍长中线

      图4,倍长 BPBPKK,可以证明 ABCFKC\triangle ABC \cong \triangle FKC,注意这是一个旋转 9090^\circ 的全等,因此 CBCBCKCK 垂直且相等,我们得到了一个等腰 RtCBK\mathrm{Rt} \triangle CBK ,于是它的一半 PCB\triangle PCB 也是一个等腰直角三角形.

      图4

      -

      构造三角形的中位线

      +

      构造三角形的中位线

      图5,分别取 ADADAFAF 的中点 MMNN,可以证明 PMBCNP\triangle PMB \cong \triangle CNP.注意这又是一个旋转 9090^\circ 的全等,因此 PBPBPCPC 垂直且相等.

      图5

      -

      构造梯形的中位线

      +

      构造梯形的中位线

      图6,分别过 DDFFAABCBC 的垂线,垂足依次为 JJKKLL,则有弦图的模型可知,BJDALB\triangle BJD \cong \triangle ALBFKCCLA\triangle FKC \cong \triangle CLA,于是 BJ=AL=CKBJ = AL = CKDJ=BLDJ = BLFK=CLFK = CL.我们取 BCBC 的中点 QQ,于是 QQ 也是 JKJK 的中点,因此 PQPQ 是梯形 DJKFDJKF 的中位线,故 PQBCPQ \perp BC,且

      PQ=12(DJ+FK)=12(BL+CL)=12BC=BQ=CQ\begin{aligned} PQ &= \dfrac{1}{2} \left( DJ + FK \right) = \dfrac{1}{2} \left( BL + CL \right) \\ @@ -316,17 +316,17 @@

      变形

      +

      变形

      我们需要注意的是,当这两个等腰 RtABD\mathrm{Rt} \triangle ABDACF\triangle ACF 旋转到不同的位置的时候,这个图可能看起来变得完全不一样,但是本质上是一个图形,如图7~图10

      图7

      图8

      图9

      图10

      -

      推广

      +

      推广

      图3中,ABD\triangle ABDACF\triangle ACF 都是等腰直角三角形.如果我们把这个条件进行弱化,去掉等腰的条件,但保持两个直角三角形是相似的,即 RtABDRtACF\mathrm{Rt}\triangle ABD \sim \mathrm{Rt}\triangle ACF (其实就是 ADB=AFC\angle ADB = \angle AFC),那么 PB=PCPB = PC 的结论依旧成立.

      图11

      这个时候的解决方法和前面也是类似的.

      -

      倍长中线

      +

      倍长中线

      这个方法和图4类似,只不过把要证明的全等变成了相似.

      图12,倍长 BPBPKK,则

      KFFC=DBFC=BAAC\frac{KF}{FC} = \frac{DB}{FC} = \frac{BA}{AC} @@ -342,7 +342,7 @@

      因此 KFCBAC\triangle KFC \sim \triangle BAC.这是一个旋转 9090^\circ 的相似,于是 BCK\triangle BCK 是直角三角形,CPCP 是其斜边中线,故 CP=12BK=PBCP = \dfrac{1}{2} BK = PB

      图12

      -

      构造三角形的中位线

      +

      构造三角形的中位线

      这个方法和图5完全一样,BM=12AD=PNBM = \dfrac{1}{2} AD = PNMP=12AF=NCMP = \dfrac{1}{2} AF = NC,且

      BMP=BMA+AMP=2BDA+AMP=2CFA+ANP=CNA+ANP=PNC\begin{aligned} \angle BMP &= \angle BMA + \angle AMP \\ @@ -354,7 +354,7 @@

      构造梯形的中位线

      +

      构造梯形的中位线

      这个方法和图6类似,不过也是要把证明的全等变成相似.

      图14BJDALB\triangle BJD \sim \triangle ALBFKCCLA\triangle FKC \sim \triangle CLA,于是

      BJAL=BDAB=CFAC=CKAL\frac{BJ}{AL} = \frac{BD}{AB} = \frac{CF}{AC} = \frac{CK}{AL} diff --git a/posts/2020-04-03-Two-squares-3/index.html b/posts/2020-04-03-Two-squares-3/index.html index 6ca50d225..3872195d0 100644 --- a/posts/2020-04-03-Two-squares-3/index.html +++ b/posts/2020-04-03-Two-squares-3/index.html @@ -286,18 +286,18 @@

      在上一篇文章的最后,我们留了一个问题,就是如果仅保留等腰的条件,是否还有比较好的结论?

      要解决这个问题,我们先从一种特殊情况谈起.

      -

      一种特殊情况

      +

      一种特殊情况

      当两个等腰 RtABD\mathrm{Rt} \triangle ABDACF\triangle ACF 旋转的时候,一种非常特殊的情况就是两个三角形的斜边共线的情况,如图1

      图1

      这个时候上面的结论依旧成立,而且我们注意到这个时候 BAC=90\angle BAC = 90^\circ,因此如果我们取 BCBC 的中点 QQ,则有 QA=12BC=QPQA = \dfrac{1}{2} BC = QP,也就是说 APQ\triangle APQ 是一个等腰三角形.

      熟悉四点共圆的朋友马上就会想到,这里面 ABCPABCP 四点共圆,圆心恰好就是 QQ

      图2

      -

      逆命题

      +

      逆命题

      那我们反过来想一下,如果取 ABC\triangle ABC 的外接圆和 DFDF 交于 PP,那么 PP 点是否一定是 DFDF 的中点?

      图3

      如果考虑同一法的话,很明显这个结论是成立的.

      那如果不用同一法呢?

      -

      构造梯形的中位线

      +

      构造梯形的中位线

      一种方法是构造梯形的中位线.我们分别过 BBCCQQDFDF 的垂线,垂足依次为 MMNNTT,则 CTCT 是梯形 BMNCBMNC 的中位线,且 MMNNTT 分别是 ADADAFAFAPAP 的中点,于是

      PD=2MT=2NT=2(ANAT)=AFAP=PF\begin{aligned} PD &= 2MT = 2NT = 2 \left( AN - AT \right) \\ @@ -307,14 +307,14 @@

      PPDFDF 的中点.

      图4

      另一种方法是构造旋转相似,这种方法放到我们后面的推广里来讲.

      -

      一种推广

      +

      一种推广

      如果要保持四点共圆的条件不变,我们可以把条件弱化成什么样子?

      注意如果要保持四点共圆的话,我们要保持 BAC=90\angle BAC = 90^\circ,因此两个等腰三角形的两底角要保持互余,也就是两顶角要保持互补.

      因此,我们可以把两个等腰直角三角形的条件改为,两个「顶角互补的等腰三角形」:

      图5

      图5中,AB=BDAB = BDAC=CFAC = CFABD+ACF=180\angle ABD + \angle ACF = 180^\circ,我们分别取 BCBCDFDF 的中点 PPQQ,则 BPC=90\angle BPC = 90^\circ,且 AQ=QPAQ = QP

      我们可以利用上一篇文章中的三种方法,对这种情况进行证明.因为方法几乎是一样的,这里就从略了.

      -

      继续推广

      +

      继续推广

      我们回顾一下图4的证明,这种方法本质上就是用了三个等腰 ABD\triangle ABDACF\triangle ACFAPQ\triangle APQ 的条件,因此我们可以把条件再进行弱化,如下图:

      图6

      图6ABD\triangle ABDACF\triangle ACF 都是等腰三角形,AB=BDAB = BDAC=CFAC = CFQQBCBC 的中点,则

      @@ -324,7 +324,7 @@

      继续

      同时,大家可以想一下,这个图形和我们上一篇文章中里的图形有什么区别和联系.

      -

      倍长中线

      +

      倍长中线

      这个时候,倍长中线的方法依旧可以使用,不过这个时候,应该要倍长 AQAQ

      图7

      @@ -348,7 +348,7 @@

      倍长

      PQ=12AK=AQPQ = \dfrac{1}{2} AK = AQ

      如果已知 QA=QPQA = QP,由 QK=QA=QPQK = QA = QP 可知 KPA=90\angle KPA = 90^\circ,再由「三线合一」可知 PD=PFPD = PF

      -

      构造三角形的中位线

      +

      构造三角形的中位线

      这个时候我们没有办法利用中位线直接证明 QA=QPQA = QP,但是我们可以分别取 ADADAFAF 的中点 MMNN,先证明 QM=QNQM= QN

      图8

      我们分别取 ABABACAC 的中点 SSTT,于是可以证明 MSQQTN\triangle MSQ \cong \triangle QTN.其中 MSQ=QTN\angle MSQ = \angle QTN 的证明和上一个方法类似.

      @@ -362,13 +362,13 @@

      两种方法的联系

      +

      两种方法的联系

      实际上,如果我们把上一种方法的图和这一种方法的图放在一起,就会发现这两组三角形其实是相似的.

      图9

      -

      构造梯形的中位线

      +

      构造梯形的中位线

      这种方法和图4的证明是一样的,这里就不在重复了.

      可以看出,这是最简单的一种证明方法.

      -

      构造旋转相似

      +

      构造旋转相似

      这个图还有一个证明方法,就是构造 AA 关于 BCBC 的对称点 SS,如图10,则

      SBD=2SAD=2(180SAF)=SCF\begin{aligned} \angle SBD &= 2\angle SAD \\ @@ -395,7 +395,7 @@

    图11

    这种方法大量用到了相似和圆周角的性质,由此又可以引申出关于双圆问题的一些结论.有兴趣的朋友可以自行探究一下.

    -

    和前文图形的关系

    +

    和前文图形的关系

    我们回过头来看一下图8,注意在这个图中我们平没有用到 DDFF 这两个点,因此我们考虑把这两个点去掉,于是这个图就变成了下面这样:

    图12

    图12AMB\triangle AMBANC\triangle ANC 都是直角三角形,且 MMAANN 共线,取 BCBC 的中点 QQ,则 QM=QNQM = QN

    diff --git a/posts/2020-04-07-Midpoint-in-trapezoid/index.html b/posts/2020-04-07-Midpoint-in-trapezoid/index.html index be82d78c5..737eec7ab 100644 --- a/posts/2020-04-07-Midpoint-in-trapezoid/index.html +++ b/posts/2020-04-07-Midpoint-in-trapezoid/index.html @@ -296,22 +296,22 @@

    在前面的三篇文章中,我们探究了和正方形有关的中点问题.在本文中,我们来看一个和梯形有关的中点问题.

    和梯形相关的中点问题,主要可以分为「底中点」和「腰中点」两大类.对于「底中点」相关的问题,我们合并到下一篇关于一般四边形的中点问题的文章中一起来讨论.今天我们重点来看一下和「腰中点」有关的问题.

    -

    「腰中点」的处理方法

    +

    「腰中点」的处理方法

    对于「腰中点」相关的问题,主要的思路有两个:「倍长中线」和构造「中位线」.

    是不是很熟悉?和前面正方形的处理方法是一样的.

    -

    倍长中线

    +

    倍长中线

    图1EE 是腰 CDCD 的中点,连结 AEAE 并延长交 BCBCFF,则有 ADEFCE\triangle ADE \cong \triangle FCE,于是 EE 也是 AFAF 的中点,AD=CFAD = CF

    这个方法相当于是 ADE\triangle ADE 旋转到了 FCE\triangle FCE,于是把原来的梯形变成了一个三角形.

    这个方法同时可以用来证明梯形的中位线定理.

    图1

    -

    梯形的中位线

    +

    梯形的中位线

    图2EE 是腰 CDCD 的中点,取 ADAD 的中点 FF,则 EFEF 是梯形 ABCDABCD 的中位线,于是 EFABCDEF \parallel AB \parallel CD,且 EF=12(AB+CD)EF = \dfrac{1}{2} (AB + CD)

    图2

    -

    直角梯形的「腰中点」

    +

    直角梯形的「腰中点」

    图3,对于直角梯形 ABCDABCDA=D=90\angle A = \angle D = 90^\circ,取腰 BCBC 的中点 EE,则 EA=EDEA = ED,即 AED\triangle AED 是等腰三角形.

    图3

    用上面两种方法,都很容易证明这个命题.

    -

    一种特殊情况

    +

    一种特殊情况

    如果在图3中加入 AEDEAE \perp DE,也就是 AED\triangle AED 是等腰直角三角形的条件,那么 AB+CD=ADAB + CD = AD

    图4

    如果用第1种方法,如图5,则 DEDE 垂直平分 AFAFADF\triangle ADF 是等腰直角三角形,

    @@ -345,17 +345,17 @@

    如果考虑四点共圆的话,有 ABEMABEMDCEMDCEMEPMQEPMQ 三组四点共圆,而且这三个圆有公共弦 EMEM

    图9

    -

    图形的来源

    +

    图形的来源

    如果我们仔细观察一下图7,我们就会发现,这个图实际上是「弦图」的一半.

    图10

    如果再考虑 PQPQ,那么这个图就相当于嵌套的两个弦图,于是图8中的结论就显然成立了.

    图11

    -

    变形

    +

    变形

    如果我们只考虑 MBC\triangle MBC,那么就变成了这样一道题:

    图12,在等腰 RtMBC\mathrm{Rt} \triangle MBC 中,EE 是斜边 BCBC 的中点,MP=CQMP = CQ,则 EPQ\triangle EPQ 是等腰直角三角形.

    图12

    利用图8中的 PMEQCE\triangle PME \cong \triangle QCE,这个结论显然是成立的.

    -

    推广一

    +

    推广一

    如果我们保留 MB=MCMB = MC 的条件(即 MEBCME \perp BC),如图13,那么这个时候仍有 AED=BMC\angle AED = \angle BMC 的结论成立.

    图13

    注意到这个时候 ABEMABEMDCEMDCEM 这两组四点共圆依旧成立,于是

    @@ -383,7 +383,7 @@

    推广一

    因此上面 ABNMABNM 四点也共圆.

    剩下的证明和图14是完全一样的,只需要把式子中的 EE 点换成 NN 点就可以.

    -

    推广二

    +

    推广二

    如果我们保留 BMC=AND=90\angle BMC = \angle AND = 90^\circ 的条件,过 BBCCADAD 上一点 MMMDC\triangle MDC 的外接圆交 BCBCNN,作 AND\triangle AND 的外接圆与 BCBC 的另一个交点 PP,则 APBMAP \perp BMDPCMDP \perp CM

    图16

    证明中还用到上面推出的 ABNMABNM 四点共圆的结论:

    @@ -406,7 +406,7 @@

    推广二图19

    事实上,对于一般的梯形 ABCDABCDABCDAB \parallel CD,如果过 BBCCADAD 上一点 MMMDC\triangle MDC 的外接圆交 BCBCNN,作 AND\triangle AND 的外接圆与 BCBC 的另一个交点 PP,那么依然有 DPBMDP \parallel BMAPCMAP \parallel CM 的结论成立.证明过程和前面完全相同.

    图20

    -

    变形

    +

    变形

    我们把图20简化一下,就可以得到下面这个题目:

    图21,在梯形 ABCDABCD 中,ABCDAB \parallel CD,任取 ADAD 上一点 MM,作 APCMAP \parallel CMBCBCPP,则 DPBMDP \parallel BM

    图21

    diff --git a/posts/2020-04-11-Install-ArchWSL/index.html b/posts/2020-04-11-Install-ArchWSL/index.html index 894e07c8c..4504f08d1 100644 --- a/posts/2020-04-11-Install-ArchWSL/index.html +++ b/posts/2020-04-11-Install-ArchWSL/index.html @@ -274,12 +274,12 @@

    最近把 windows 更新到了 2004,切换到了 WSL 2 上。

    -

    安装 WSL 2

    +

    安装 WSL 2

    启用 WSL 和虚拟机控制平台功能(要求管理员权限):

    1
    2
    3
    dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
    dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart
    wsl --set-default-version 2

    之后重启电脑。

    安装 Arch,参见 ArchWSL

    -

    WSL 2 相对于 WSL 1 的优缺点

    +

    WSL 2 相对于 WSL 1 的优缺点

    优点:

    • 本地文件操作更快。之前编译一个 glibc,几个小时都没有编完
    • @@ -292,56 +292,56 @@

      语言设置

      +

      语言设置

      /etc/locale.conf 改为 LANG=zh_CN.UTF8

      然后 source /etc/locale.conf

      一个非常奇怪的事情是,如果把 LANG 设为 zh_CN.UTF-8,那么在 bash 下,windows 中的中文文件名显示为乱码,而 zsh 则显示正常。
      但在默认的 LANG=en_US.UTF-8 下,bashzsh 都能正常显示中文文件名。

      -

      安装软件包

      -

      导入密钥(非常重要!!!)

      +

      安装软件包

      +

      导入密钥(非常重要!!!)

      1
      2
      # 初始化密钥环 && 验证主密钥 && 更新密钥
      pacman-key --init && pacman-key --populate archlinux && pacman-key --refresh-keys
      -

      启用国内的镜像源

      +

      启用国内的镜像源

      1
      2
      3
      4
      5
      6
      echo "Server = https://mirrors.aliyun.com/archlinux/\$repo/os/\$arch
      Server = https://mirrors.tuna.tsinghua.edu.cn/archlinux/\$repo/os/\$arch
      Server = https://mirrors.neusoft.edu.cn/archlinux/\$repo/os/\$arch
      Server = https://mirrors.cqu.edu.cn/archlinux/\$repo/os/\$arch
      Server = https://mirrors.sjtug.sjtu.edu.cn/archlinux/\$repo/os/\$arch
      Server = https://mirrors.ustc.edu.cn/archlinux/\$repo/os/\$arch" > /etc/pacman.d/mirrorlist
      -

      添加 ArchlinuxCN 源

      +

      添加 ArchlinuxCN 源

      1
      2
      3
      4
      echo "
      [archlinuxcn]
      Server = https://mirrors.tuna.tsinghua.edu.cn/archlinuxcn/x86_64" >> /etc/pacman.conf
      pacman -Sy && pacman -S archlinuxcn-keyring && pacman -S yaourt

      这里坚持用 yaourt 的原因有两个,一是在 root 环境下使用不报错(主要是需要彩色显示),二是可以显示版本更新还是编译更新。

      -

      安装常用软件

      -

      先搭建好常用环境

      +

      安装常用软件

      +

      先搭建好常用环境

      1
      2
      pacman -Syu
      pacman -S zsh git subversion lua openssh
      -

      安装 zinit(原 zplugin)

      +

      安装 zinit(原 zplugin)

      1
      2
      git clone https://github.com/zdharma/zinit.git ~/.zinit/bin
      echo "source ~/.zinit/bin/zinit.zsh" > ~/.zshrc

      不得不再次吐槽一下 git clone 的速度。。。

      -

      安装 powerlevel10k

      +

      安装 powerlevel10k

      1
      echo "zinit ice depth=1; zinit light romkatv/powerlevel10k" >> ~/.zshrc
      -

      启用 zsh(终于有了一个好看的终端)

      +

      启用 zsh(终于有了一个好看的终端)

      1
      zsh

      然后就可以导入之前的 .zshrc 了。

      -

      切换默认终端至 zsh

      +

      切换默认终端至 zsh

      1
      chsh -s /bin/zsh
      -

      安装 vim-plug

      +

      安装 vim-plug

      1
      2
      curl -fLo ~/.vim/autoload/plug.vim --create-dirs \
      https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim

      导入之前的 .vimrc 文件,并执行命令:

      1
      vim +PlugInstall +qall
      -

      安装常用软件

      +

      安装常用软件

      1
      2
      3
      4
      5
      6
      7
      pacman -S base-devel which diffutils man openssh tree p7zip bc wget \
      htop strace most \
      yarn npm python-pip \
      zathura-ps zathura-pdf-poppler \
      feh imagemagick mediainfo ffmpeg \
      opencc dos2unix jq net-tools bind-tools nload
      yarn global add hexo-cli nali-cli http-server
      -

      安装花哨软件

      +

      安装花哨软件

      1
      pacman -S fd exa bat ripgrep percol
      -

      安装常用字体

      +

      安装常用字体

      1
      pacman -S adobe-source-code-pro-fonts adobe-source-sans-pro-fonts adobe-source-serif-pro-fonts adobe-source-han-sans-cn-fonts adobe-source-han-serif-cn-fonts tex-gyre-fonts ttf-dejavu wqy-zenhei wqy-microhei ttf-sarasa-gothic
      -

      安装专业软件

      +

      安装专业软件

      1
      2
      3
      pacman -S texlive-most
      pacman -S texlive-langchinese biber asymptote qtikz \
      sagemath jupyter

      注意:安装 texlive-fontextra 会爆内存!!!
      反正我的8G内存被爆了,16G没有问题)

      -

      安装 X 软件

      +

      安装 X 软件

      1
      pacman -S tk gvim

      ~/.zshrc 中添加:

      1
      2
      export DISPLAY=$(awk '/nameserver / {print $2; exit}' /etc/resolve.conf 2>/dev/null):0.0
      export LIBGL_ALWAYS_INDIRECT=1

      注意对于 WSL 2,VcXsrv 启动时需要选中 Disable access control 的选项,或者加上 -ac 的参数。

      -

      添加新用户

      +

      添加新用户

      1
      2
      3
      4
      groupadd AAA
      useradd XXX -g AAA -G wheel -m -N
      pacman -S sudo
      echo "wheel ALL=(ALL) NOPASSWD: ALL" > /etc/sudoers.d/wheel

      其实我一直是使用 root 账户,只有在需要 makepkg 的时候才切换到普通用户。

      diff --git a/posts/2020-05-01-Reinstall-Windows/index.html b/posts/2020-05-01-Reinstall-Windows/index.html index 3e858e237..5290bf046 100644 --- a/posts/2020-05-01-Reinstall-Windows/index.html +++ b/posts/2020-05-01-Reinstall-Windows/index.html @@ -282,11 +282,11 @@

      安装 windows 还是比较顺利的。这里建议不要用 Media Creation Tool,而是直接下载 iso 文件,这样下载的速度会快一些。(谁叫我有 IDM 呢 →_→)

      安装之后,系统引导会自动生成,不用手动干预。

      然而,主要耗费时间是在安装各种软件上。

      -

      Adobe

      +

      Adobe

      有请 vposy 大神。。。

      -

      Office 下载与激活

      +

      Office 下载与激活

      参见 https://v0v.bid

      -

      MathType 与字体冲突的问题

      +

      MathType 与字体冲突的问题

      MathType 与 Microsoft Store 中的「更纱黑体」相冲突,安装「更纱黑体」会导致 MathType 闪退,原因不明。

      但直接下载字体点击安装的话就没有问题。

      这个问题折腾了我半天的时间。。。

      @@ -296,7 +296,7 @@

      又尝试单独安装部分字体,只装了 Sarasa Term,没有问题。那就先这么用吧。。。

    -

    盘符问题

    +

    盘符问题

    在安装的时候,一定将新的系统盘标为 C 盘。如果系统安装完了之后,就没法再修改了。至少我目前还没有找到方法。

    看过网上说的一些方法。如果直接在硬盘管理中修改盘符的话,非系统盘是可以直接修改的,系统盘修改的话会显示参数错误。

    还有直接修改注册表中 HKEY_LOCAL_MACHINE\SYSTEM\MountedDevices 下的驱动器号的,我试了一下,然后电脑就无法启动了。还是通过安装盘恢复原来的设定之后才能启动。

    @@ -308,7 +308,7 @@

    盘符

    其实大部分软件安装都没有问题,只是在「华为电脑管家」的时候出现了问题。
    于是我只能把另外一个分区改为 C 盘,然后安装之后把 Program Files(x86) 中的文件移到 D 盘中,然后在注册表中搜索修改所有相关的项。
    目前使用上还没有发现问题。

    -

    独显问题

    +

    独显问题

    之前电脑上,可以选择以 N 卡运行 chrome。但是这次安装之后,即使是选择 N 卡运行,包括在 Nvidia 控制面板里设置,还是右击选择以「高性能 Nvidia 处理器」运行,都没有作用。

    Firefox 也不管用。

    但是 mpv 和 qutebrwoser 都运行正常。

    @@ -317,14 +317,14 @@

    独显 我就是想打个麻将而已,容易么我。。。
    顺带说一下,笔记本是 14 年买的,CPU 是 i7-4700HQ,核显是 HD Graphic 4600,独显是 GeForce GTX 850M。

    -

    播放器选择

    +

    播放器选择

    安装之后试了一下 4k 视频的播放,发现不需要修改就可以直接舒畅播放的就只有 vlc,而且仅仅使用核显,播放的时候 CPU 30%,核显 vlc 使用 5%,整体 20%,不知道是怎么调教的。

    如果配置好的话,让 mpv 用 N 卡解码也是可以流畅播放的,核显 25%,独显 60%。

    -

    对不同应用切换不同的输入法

    +

    对不同应用切换不同的输入法

    设置 -> 设备 -> 输入 -> 高级键盘设置 -> 切换输入法 -> 勾选「允许我为每个应用窗口使用不同的输入法」

    -

    杀毒软件

    +

    杀毒软件

    趁着这次机会,入正了 EAV。

    -

    Git

    +

    Git

    如果直接安装 Git For Windows 的话,就没有什么问题。
    不过由于我安装了 MSYS2,因此就直接在 MSYS2 里面安装了,但这带来了一个奇怪的问题,那就是 git 的 ssh 协议无法使用。具体就是:如我运行

    1
    ssh -T git@github.com
    @@ -333,7 +333,7 @@

    Git

    但是 git pullgit push 就是运行不成功,显示

    1
    2
    3
    4
    5
    git@github.com: Permission denied (publickey).
    fatal: Could not read from remote repository.

    Please make sure you have the correct access rights
    and the repository exists.

    后来发现,Git For Windows 貌似可以之间使用 Windows 默认的 ssh 配置文件(位置在 %HOMEPATH%\.ssh\),而在 MSYS2 里安装的话需要把密钥复制到 MSYS2 的 ssh 配置文件里。

    -

    WSL

    +

    WSL

    在安装完 WSL 之后,我发现网络访问有问题,而且问题比较奇怪。

    我在 WSL 中,能够正常访问网络;在 Windows 中,也能访问 WSL 中的网络;但是在 WSL 中,无法访问 Windows 应用,包括 VcXsrc。

    diff --git a/posts/2020-05-12-Windows-commands/index.html b/posts/2020-05-12-Windows-commands/index.html index 5151f0045..ff921b23d 100644 --- a/posts/2020-05-12-Windows-commands/index.html +++ b/posts/2020-05-12-Windows-commands/index.html @@ -272,7 +272,7 @@

    -

    直接运行

    +

    直接运行

    • winver: 关于 Windows
    • msinfo32:系统信息
    • @@ -287,7 +287,7 @@

      直接
    • mspaint:画图
    • notepad:记事本
    -

    管理控制台

    +

    管理控制台

    • services.msc: 服务
    • gpedit.msc: 组策略
    • @@ -296,7 +296,7 @@

    • diskmgmt.msc:磁盘管理 Win+X K
    • secpol.msc:本地安全策略
    -

    控制面板

    +

    控制面板

    • hdwwiz.cpl:设备管理器 Win+X M
    • appwiz.cpl: 程序和功能(卸载)
    • diff --git a/posts/2020-06-22-FFmpeg-Commands/index.html b/posts/2020-06-22-FFmpeg-Commands/index.html index b8c66409c..75cf69795 100644 --- a/posts/2020-06-22-FFmpeg-Commands/index.html +++ b/posts/2020-06-22-FFmpeg-Commands/index.html @@ -265,7 +265,7 @@

      -

      剪裁文件

      +

      剪裁文件

      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      ### 截取前一部分的视频
      ffmpeg -t [duration] -i [input.mp4] -c copy [output.mp4]

      ### 截取后一部分视频
      ffmpeg -ss [start] -i [input.mp4] -c copy [output.mp4]

      ### 截取中间一部分视频(结束时间确定)
      ffmpeg -ss [start] -to [end] -i [input.mp4] -c copy [output.mp4]
      ### 或者(时长确定)
      ffmpeg -ss [start] -t [duration] -i [input.mp4] -c copy [output.mp4]

      时间格式:HH:MM:SS.XXX

      这里面使用 -c copy 的选项,避免重新进行编码,可以很快地进行剪裁。

      @@ -276,16 +276,16 @@

      剪裁
      1
      ffmpeg -ss [start] -t [duration] -accurate_seek -i [input.mp4] -avoid_negative_ts 1 -c copy [output.mp4]

      注意 -accurate_seek 选项要在 -i 选项之前。

      如果需要非常精确的剪裁的话,需要重新进行编码,并使用 -strict experimental 或者 -strict 2 的选项。

      -

      合并文件

      +

      合并文件

      先把要合并的文件写在一个文本文件 list.txt 里:

      1
      2
      3
      file './split1.mp4'
      file './split2.mp4'
      file './split3.mp4'

      然后再进行合并:

      1
      ffmpeg -f concat -i [list.txt] -c copy [output.mp4]
      -

      改变格式

      +

      改变格式

      1
      2
      3
      4
      5
      ### 重新编码
      ffmpeg -i [input].mp4 [output].flv

      ### 不重新编码
      ffmpeg -i [input].mp4 -c copy [output].flv
      -

      提取音频

      +

      提取音频

      1
      ffmpeg -i [intput].mp4 -c:a copy [output.aac]
      -

      合并视频和音频

      +

      合并视频和音频

      1
      ffmpeg -i [input.mp4] -i [input.aac] -c copy [output.mp4]
      diff --git a/posts/2020-06-22-Notability-vs-GoodNotes/index.html b/posts/2020-06-22-Notability-vs-GoodNotes/index.html index 919830eee..f0576aad4 100644 --- a/posts/2020-06-22-Notability-vs-GoodNotes/index.html +++ b/posts/2020-06-22-Notability-vs-GoodNotes/index.html @@ -292,14 +292,14 @@

      注意:两款软件都在不断更新,并且不断添加新的功能,因此后面所说的可能与您现在所用到的功能并不完全相同。请注意本文的更新日期。

      例如,就在我使用它们上课的这几个月间,Notability 添加了投屏区域和激光笔功能,导致我从完全使用 GoodNotes 转换到目前以使用 Notability 为主。(毕竟从一开始,我就是 Notability 党)

      -

      作为一个投屏教学的笔记软件的必要条件

      +

      作为一个投屏教学的笔记软件的必要条件

      • 支持投屏区域功能,即只投屏指定区域,而不是整个屏幕,保证 iPad 上弹出的消息不会被投上去
      • 支持激光笔功能,并且支持暂时保留激光笔的书写痕迹
      • 支持画直线的功能(几何教学必备)
      • 防误触功能
      -

      两个笔记本软件目前都支持的功能

      +

      两个笔记本软件目前都支持的功能

      -

      GoodNotes 的优势

      +

      GoodNotes 的优势

      • 👍多层文件夹管理,可以按照「课件-学期-课程-讲义」的层级结构来组织存放讲义,便于寻找
      • 支持批量管理页面
      • @@ -322,14 +322,14 @@

        GoodNotes 的痛点

        +

        GoodNotes 的痛点

        • 👎👎画直线和其它规则图形,需要切换到专门的工具才可以。而且轨迹是画完后自动校正,无法提前预览,因此精确度较难把握
        • 👎👎👎直线画不直,经常自动校正成为折线,特别是在画相对较短的线段的时候。画长线段的时候反而会好一点。(技巧:开启不显示页面缩放的功能,然后把页面放大,再画直线)
        • 👎👎👎当绘制倾斜程度很小或者很大的直线的时候,会被自动校正为水平或者竖直的直线,导致根本无法画出正确的直线
        • 只能复制书写笔记,不能复制原文件的内容,只能通过截图再导入实现,比较麻烦
        -

        Notability 的优势

        +

        Notability 的优势

        • 👍👍👍支持自动拉直和图形检测,即绘制完成之后,继续长按,可以自动转化为直线或者其它图形,并且可以调整和实时预览,还会自动弹出放大镜,方便精确控制绘制点
        • 👍👍👍绘制完成的线段可以自由调整两个端点,且长按会有放大镜
        • @@ -342,7 +342,7 @@

          Notability 的痛点

          +

          Notability 的痛点

          • 文件管理只支持两个层级
          • 👎👎👎新消息弹出的时候,会阻挡工具栏,如果恰好在选择工具的时候点击到弹出的消息,可能会造成教学事故……
          • @@ -353,7 +353,7 @@

            我的经验

            +

            我的经验

            在最开始上课的时候,由于 Notability 还不支持投屏区域功能,因此只能使用 GoodNotes,恰巧这个时候有好几个班都在讲几何,因此体会最深的就是每次画辅助线的时候都要切换工具,画完之后还要切换回来,非常麻烦。而且它的自动校正并不准确,而且在画完之后不支持调整,导致一条线有时需要画好几遍才能画得比较准确。

            因此在暑假开课的时候,我终于可以切换到了 Notability,但是也带了各种不方便,上面列举的所有痛点,都是我在讲课的时候遇到的。这里面影响最大的就是添加同类型页面非常麻烦。因为几何题目的过程较长,一页的板书写不下,所以我得提前复制好新的页面,否则在讲解题目的时候再复制,就会非常影响讲课的节奏。(但我又经常忘了。。。)

            不得不说,习惯了 GoodNotes 添加页面的快捷之后,再回到 Notability,我到现在都没法适应。

            @@ -364,7 +364,7 @@

            我的

            关于颜色切换部分,我补充一点。如果仅仅使用 3 个颜色就够的话,GoodNotes 的切换方式要快的多;但是,如果使用的颜色更多的话,反而是 Notability 的切换方式更加顺畅。在讲比较复杂的几何题的时候,这点体现得尤为明显。

            因此,仅从书写体验来看,Notability 要比 GoodNotes 强太多,特别是讲几何题的时候。

            而从综合体验上来看,则是 GoodNotes 完胜。

            -

            我的选择

            +

            我的选择

            只要有几何内容,那么一定使用 Notability。

            如果只讲代数内容,那就看当时的心情吧。不过我更喜欢 Notability 里面书写的感觉,因此继续用 Notability 的几率会更大一点吧。

            diff --git a/posts/2020-06-22-tkz-euclide-1/index.html b/posts/2020-06-22-tkz-euclide-1/index.html index 55f9975ef..f130673bd 100644 --- a/posts/2020-06-22-tkz-euclide-1/index.html +++ b/posts/2020-06-22-tkz-euclide-1/index.html @@ -284,8 +284,8 @@

            • 命名比较繁琐
            -

            定义点的方法

            -

            定义坐标点

            +

            定义点的方法

            +

            定义坐标点

            @@ -312,7 +312,7 @@

            -

            定义相对点

            +

            定义相对点

            @@ -377,7 +377,7 @@

            -

            定义几何变换点

            +

            定义几何变换点

            命令:\tkzDefPointBy[<option>](P) \tkzGetPoint{Q}

            批量变换:\tkzDefPointsBy[<option>](M,N,...){P,Q,...}

            (如后面的为{},则缺省值为M',N',...

            @@ -423,7 +423,7 @@

            定义向量变换点

            +

            定义向量变换点

            命令:\tkzDefPointWith[<options>](<A,B>) \tkzGetPoint{C}

            @@ -562,7 +562,7 @@

            定义三角形的各中心

            +

            定义三角形的各中心

            命令:\tkzDefTriangleCenter[<option>](<A,B,C>) \tkzGetPoint{P}

            @@ -648,7 +648,7 @@

            定义随机点

            +

            定义随机点

            命令:\tkzDefRandPointOn[<local option>] \tkzGetPoint{P}

            @@ -684,11 +684,11 @@

            -

            获取点的方法

            +

            获取点的方法

            获取一个点:\tkzGetPoint{A},默认存储为 tkzPointResult

            获取多个点:\tkzGetPoints{A}{B},默认存储为 tkzFirstPointResulttkzSecondPointResult

            若只获取其中某一个,则可以使用 tkzGetFirstPoint{A}\tkzGetSecondPoint{B}

            -

            绘制点的方法

            +

            绘制点的方法

            绘制单个点:\tkzDrawPoint[<options>](A)

            绘制多个点:\tkzDrawPoints[<options>](A,B,C,...)

            自定义点的样式:\tkzSetUpPoint[<options>]

            @@ -718,7 +718,7 @@

            -

            标记点的方法

            +

            标记点的方法

            标记单个点:\tkzLabelPoint[<options>](A){<text support tex>}

            标记多个点:\tkzLabelPoints[<options>](A,B,C,...)

            自动选择位置标记多个点:\tkzAutoLabelPoints[center=M, <options>](A,B,C,...)

            diff --git a/posts/2020-07-04-tkz-euclide-2/index.html b/posts/2020-07-04-tkz-euclide-2/index.html index b789af172..1f0fdc92a 100644 --- a/posts/2020-07-04-tkz-euclide-2/index.html +++ b/posts/2020-07-04-tkz-euclide-2/index.html @@ -274,8 +274,8 @@

            在上一节中,总结了各种定义特殊点的方法,这一节主要讲述如何定义各类直线形——直线,三角形和多边形.

            -

            定义直线形的方法

            -

            定义直线

            +

            定义直线形的方法

            +

            定义直线

            命令:\tkzDefLine[<options>](A,B) or (A,B,C) \tkzGetPoints{P}{Q} or \tkzGetPoint{P}

            @@ -340,7 +340,7 @@

            定义

            -

            定义切线

            +

            定义切线

            @@ -359,7 +359,7 @@

            定义

            -

            定义三角形

            +

            定义三角形

            命令:\tkzDefTriangle[<options>](A,B) \tkzGetPoint{C}

            @@ -403,7 +403,7 @@

            -

            定义特殊三角形

            +

            定义特殊三角形

            命令:\tkzDefSpcTriangle[<options>](A,B,C),对应的「心」存在 tkzPointResult

            @@ -461,7 +461,7 @@

            定义特殊多边形

            +

            定义特殊多边形

            @@ -484,7 +484,7 @@

            定义正多边形

            +

            定义正多边形

            命令:\tkzDefRegPolygon[<options>](A,B)

            @@ -512,8 +512,8 @@

            -

            绘制直线形的方法

            -

            绘制直线

            +

            绘制直线形的方法

            +

            绘制直线

            绘制一条直线:\tkzDrawLine[<options>](A,B)

            绘制多条直线:\tkzDrawLines[<options>](A,B C,D ...)

            自定义直线的样式:\tkzSetUpLine[<options>]

            @@ -543,7 +543,7 @@

            绘制 -

            绘制三角形中的特殊线段

            +

            绘制三角形中的特殊线段

            @@ -566,24 +566,24 @@

            绘制线段

            +

            绘制线段

            绘制一条线段:\tkzDrawSegment[<options>](A,B)(相当于 \draw (A)--(B)

            绘制多条线段:\tkzDrawSegments[<options>](A,B C,D ...)

            -

            (定义并)绘制三角形

            +

            (定义并)绘制三角形

            命令:\tkzDrawTriangle[<options>](A,B) \tkzGetPoint{C}

            -

            (定义并)绘制正方形

            +

            (定义并)绘制正方形

            命令:\tkzDrawSquare[<options>](A,B) \tkzGetPoints{C}{D}

            -

            (定义并)绘制黄金矩形

            +

            (定义并)绘制黄金矩形

            命令:\tkzDrawGoldRectangle[<options>](A,B) \tkzGetPoints{C}{D}

            -

            绘制多边形

            +

            绘制多边形

            命令:\tkzDrawPolygon[<options>](A,B,C,...)

            -

            绘制多边形链

            +

            绘制多边形链

            命令:\tkzDrawPolySeg[<options>](A,B,C,...)

            -

            填充直线形的方法

            -

            填充多边形

            +

            填充直线形的方法

            +

            填充多边形

            命令:\tkzFillPolygon[<options>](A,B,C,...)

            -

            标记直线形的方法

            -

            标记直线

            +

            标记直线形的方法

            +

            标记直线

            命令:\tkzLabelLine[<options>](A,B){<text support tex>}

            @@ -607,11 +607,11 @@

            标记

            -

            标记线段

            +

            标记线段

            标记一条线段:\tkzLabelSegment[<options>](A,B)

            标记多条线段:\tkzLabelSegments[<options>](A,B C,D ...)

            选项和直线相同.

            -

            用符号标记线段

            +

            用符号标记线段

            标记一条线段:\tkzMarkSegment[mark=<mark option>, <other options>](A,B)

            标记多条线段:\tkzMarkSegment[mark=<mark option>, <other options>](A,B C,D ...)

            diff --git a/search.xml b/search.xml index 8adbe8ac8..d233b842f 100644 --- a/search.xml +++ b/search.xml @@ -244,26 +244,26 @@ Linux 随学随记 (1) //posts/2014-03-01-Linux-Notes-1/ - 一、vim替换 + 一、vim替换

            ctrl+v 进入列模式,向下或向上移动光标,把需要注释的行的开头标记起来,然后按大写的I,再插入注释符,比如#,再按Esc,就会全部注释。或者也可以运行下面这些命令:

            :s/^/#            #用"#"注释当前行
            :2,50s/^/# #在2~50行首添加"#"注释
            :.,+3s/^/# #用"#"注释当前行和当前行后面的三行
            :%s/^/# #用"#"注释所有行

            顺便说一下vim的替换,这个常用,已经牢记,其实和上面用命令注释多行是一样的,只不过是上面注释的命令里的"^"符号代表开始位置而已,在下面这些命令中,"s"代表替换,part1代表查找的内容,part2代表替换的内容,"%"代表所有行,"g"代表替换整行里所有的内容(如果不加"/g"则只替换每行第一个匹配part1的地方)。

            p.n.关于g的用法貌似在本系统相反,虽然各处都这么说。。。

            :s/part1/part2              #用part2替换当前行中第1个part1
            :s/part1/part2/g #用part2替换当前行中所有的part1
            :%s/part1/part2 #用part2替换所有行中每行第1个part1
            :%s/part1/part2/g #用part2替换所有行中所有的part1
            :2,50s/part1/part2 #用part2替换第2行到第50行中每行第1个part1
            :2,50s/part1/part2/g #用part2替换第2行到第50行中所有的part1
            :.,+3s/part1/part2 #用part2替换当前行以及当前行后面的三行中每行第1个part1
            :.,+3s/part1/part2/g #用part2替换当前行以及当前行后面的三行中所有的part1

            BTW:在替换时要注意,某些字符是需要转译的,如空格、括号等。

            -

            二、sed添加空行

            -

            (一)每行前后添加空行

            +

            二、sed添加空行

            +

            (一)每行前后添加空行

            sed G tmp                          #每行后面添加一行空行
            sed '{x;p;x;}' tmp #每行前面添加一行空行
            sed 'G;G' tmp #每行后面添加两行空行
            sed '{x;p;x;x;p;x;}' tmp #每行前面添加两行空行
            sed 'G;G;G' tmp #每行后面添加三行空行
            sed '{x;p;x;x;p;x;x;p;x}' tmp #每行前面添加三行空行

            依次类推,添加几行空行,就有几个G或者x;p;x

            -

            (二)如果行后有空行,则删除,然后每行后面添加空行

            +

            (二)如果行后有空行,则删除,然后每行后面添加空行

            sed '/^$/d;G' tmp

            -

            (三)在匹配行前后添加空行

            +

            (三)在匹配行前后添加空行

            sed '/shui/G' tmp               #如果一行里面有如果一行里面有shui这个单词,那么在他后面会添加一个空行
            sed '/shui/{x;p;x;G}' tmp #如果一行里面有shui这个单词,那么在他前后各添加一个空行
            sed '/shui/{x;p;x;}' tmp #如果一行里面有shui这个单词,那么在他前面添加一个空行
            sed '1{x;p;x;}' tmp #在第一行前面添加空行,想在第几行,命令中的1就改成几
            sed '1G' tmp #在第一行后面添加空行,想在第几行,命令中的1就改成几
            -

            (四)每几行后面添加一个空行

            +

            (四)每几行后面添加一个空行

            sed 'N;/^$/d;G' tmp                #每两行后面增加一个空行
            sed 'N;/^$/d;{x;p;x;}' tmp #每两行前面添加一个空行
            sed 'N;N;/^$/d;G' tmp #每三行后面增加一个空行
            sed 'N;N;/^$/d;{x;p;x;}' tmp #每三行前面增加一个空行
            -

            (五)以x为开头或以x为结尾的行前后添加空行

            +

            (五)以x为开头或以x为结尾的行前后添加空行

            sed '/^xi/G;' tmp             #以xi为开头的行后面添加空行
            sed '/^xi/{x;p;x;}' tmp #以xi为结尾的行前面添加空行
            sed '/xi$/G;' tmp #以xi为结尾的行后面添加空行
            sed '/xi$/{x;p;x;}' tmp #以xi为结尾的行后面添加空行
            -

            三、sed删除行首空格

            +

            三、sed删除行首空格

            如果确认只是空格:

            sed 's/^ *//' infile

            如果判断不清行首是空格还是制表符的话, 还可以用这个:

            @@ -379,25 +379,25 @@ Other helper scripts: dynamic ieevent

            正则表达式简介 //posts/2014-03-09-intro-for-regular-expression/ - 元字符 (grep, sed)

    -

    1. 句点元字符 .

    + 元字符 (grep, sed)

+

1. 句点元字符 .

通配元字符,匹配任意字符,除了换行符。

-

2. 反斜杠元字符 \\

+

2. 反斜杠元字符 \\

将其后面的一个字符解释为普通字符而不是元字符。

-

3. 星号元字符 \*

+

3. 星号元字符 \*

其紧挨着的之前的匹配有 0+ 次匹配机会。

-

4. 位置元字符 ^, $

+

4. 位置元字符 ^, $

^ 匹配字符串的最前面。
$ 匹配字符串的最后面。

-

5. 字符组元字符 [ ], 连字符元字符 -, 补字号 ^

+

5. 字符组元字符 [ ], 连字符元字符 -, 补字号 ^

[] 匹配方括号内的左右字符。
\- 连字符元字符仅在字符组元字符内有意义,表示一段连续字符范围。
^ 表示排除某些字符。

-

6. 范围字符串 \\{ \\}

+

6. 范围字符串 \\{ \\}

\\{n,m\\} 匹配 n~m 次。
\\{n\\} 匹配 n 次。
\\{n,\\} 匹配 n+ 次。

-

7. 特殊字符类

+

7. 特殊字符类

[[:alpha:]] 匹配任意字母字符,大写或小写
[[:alnum:]] 匹配任意字母数字字符,0-9, a-z, A-Z
[[:blank:]] 匹配空格或制表符字符
@@ -407,19 +407,19 @@ $ 匹配字符串的最后面。

[[:punct:]] 匹配任意标点
[[:space:]] 匹配任意空白字符: 空格、制表符、NL、FF、VT、CR
[[:upper:]] 匹配任意大写字符,A-Z

-

扩展元字符 (egrep, awk)

-

1. 加号元字符 +

+

扩展元字符 (egrep, awk)

+

1. 加号元字符 +

其紧挨着的之前的匹配有 1+ 次匹配机会。

-

2. 问号元字符 ?

+

2. 问号元字符 ?

其紧挨着的之前的匹配有 0~1 次匹配机会。

-

3. 竖线元字符 |

+

3. 竖线元字符 |

r1|r2 匹配 r1 或 r2

-

4. 括号元字符 ( )

+

4. 括号元字符 ( )

(r1) 匹配子字符串r1(常与 * + ? | 等连用)。

-

5. 范围元字符 { }

+

5. 范围元字符 { }

与上面的范围元字符类似。

-

固定元字符 (grep)

-

1. \\< \\>

+

固定元字符 (grep)

+

1. \\< \\>

严格匹配一个词(后面必须直接跟一个空格或标点符号)。

参考:

    @@ -481,15 +481,15 @@ $ 匹配字符串的最后面。

    Linux 随学随记 (2) //posts/2014-03-19-Linux-Notes-2/ - 一、vim切换tab + 一、vim切换tab

    向后 :tabn
    向前 :tabp

    -

    二、vim与系统剪贴板的交互 (仅限于gvim!!!)

    +

    二、vim与系统剪贴板的交互 (仅限于gvim!!!)

    "+y
    复制到剪贴板

    "+p
    从剪贴板粘贴

    -

    三、vim重复命令

    +

    三、vim重复命令

    .
    重复上次操作,前面可加次数

    :[range]g[lobal]/{pattern}/[cmd]
    @@ -498,13 +498,13 @@ $ 匹配字符串的最后面。

    在 [range] 界定的_不_匹配模式 {pattern} 的文本行上执行 Ex 命令 [cmd] (缺省是 :p)。

    :[range]v[global]/{pattern}/[cmd]
    等同于 :g!。

    -

    四、vim中tab与空格的转换 (慎用!!!)

    +

    四、vim中tab与空格的转换 (慎用!!!)

    :ret[ab][!] [new_tabstop]
    将制表符<TAB>转换为空格符,数量由[new_tabstop]指定。若为空或为0,则使用默认的tabstop
    若有!,则将空格序列转化为<TAB>

    -

    五、查看中文帮助

    +

    五、查看中文帮助

    man -L zh_CN.utf8 command

    -

    六、查看日志

    +

    六、查看日志

    journalctl [OPTIONS...] [MATCHES...]

    Options:

    -f --follow        Follow the journal
    --since=DATE Start showing entries on or newer than the specified date
    --until=DATE Stop showing entries on or older than the specified date
    -l --full Do not ellipsize fields
    -u --unit=UNIT Show data only from the specified unit
    --disk-usage Show total disk usage of all journal files
    @@ -555,28 +555,28 @@ $ 匹配字符串的最后面。

    Linux 随学随记 (3) //posts/2014-04-20-Linux-Notes-3/ ^[ 使用Ctrl-V Esc生成(ASC ASCII值)

    -

    二、开机自启动文件

    +

    二、开机自启动文件

    系统: /etc/rc.d/rc.local
    用户: $HOME/.config/autostart/

    -

    三、sed 替换中使用变量

    +

    三、sed 替换中使用变量

    sed替换命令用双引号" " 而不是单引号 ' ',然后里面直接用 $VARIABLE 就可以了。

    -

    四、vim 保存 root 权限文件

    +

    四、vim 保存 root 权限文件

    :w !sudo tee %
    -

    五、vim 跳转

    +

    五、vim 跳转

    Ctrl+] = Ctrl+left\_click
    Ctrl+t = Ctrl+right\_click
    -

    六、从视频中提取音频

    +

    六、从视频中提取音频

    运行以下命令之一:

    mencoder -oac mp3lame -ovc copy -of rawaudio 01.flv -o 01.mp3
    ffmpeg -i 01.flv -f mp3 -vn 01.mp3
    ffmpeg -i 01.flv -acodec libmp3lame -vn 01.mp3
    -

    七、交换 CapsLock 键和左 Ctrl 键

    -

    1. 使用 gnome-tweak-tool

    +

    七、交换 CapsLock 键和左 Ctrl 键

    +

    1. 使用 gnome-tweak-tool

    选择 Typing > Ctrl key position > Swap Ctrl and Caps Lock 即可。

    (要求 gsettings get org.gnome.settings-daemon.plugins.keyboard active 的值为 true,故在 gnome 中使用 fcitx 时此方法无法使用)

    -

    2. 使用 setxkbmap 命令

    +

    2. 使用 setxkbmap 命令

    运行

    setxkbmap -option ctrl:swapctrl

    或者在 ~/.zshrc 中添加如下内容:

    # Swap Ctrl_L and CapsLock
    if [[ -n $DISPLAY ]]; then
    setxkbmap -option ctrl:swapctrl
    fi
    -

    八、交换 Escape 键和右 Alt 键

    +

    八、交换 Escape 键和右 Alt 键

    这时,前面两种方法都没有现成的选项可以使用,因此我们使用xmodmap

    建立 ~/.xmodmap,添加如下内容:

    ! 交换Escape和Alt_R
    clear mod1
    keycode 9 = Alt_R NoSymbol Alt_R
    keycode 108 = Escape NoSymbol Escape
    add mod1 = Escape Meta_L
    @@ -791,10 +791,10 @@ $ 匹配字符串的最后面。

    Linux 随学随记 (4) //posts/2015-08-20-Linux-Notes-4/ - mplayer 循环播放歌曲 + mplayer 循环播放歌曲
    mplayer -loop n ***.mp3

    n 表示重复次数,0 表示无限循环。

    -

    vim 搜索大小写匹配

    +

    vim 搜索大小写匹配

    set ignorecase
    忽略正常字母的大小写

    set smartcase
    @@ -803,12 +803,12 @@ $ 匹配字符串的最后面。

    强制忽略大小写

    \C
    强制匹配大小写

    -

    cd 转移

    +

    cd 转移

    当两个目录路径只有一个区别(比如一个单词不同)时,这个是从旧目录切换到新目录的一种简单方法。

    cd directorya directoryb

    第一个参数是当前目录路径中需要替换的参数,第二个参数是替换字符串。

    # 要从v7目录 切换到v8目录,只需键入cd v7 v8
    /programs/v7/reports/monthly > cd v7 v8
    /programs/v8/reports/monthly >

    # 如果历史上的每年每月都有一个对应目录,cd 转移允许从一年跳到另一年
    /hist/2010/april/reports > cd 2010 2011
    /hist/2011/april/reports >

    # 切换月份目录
    /hist/2011/april/reports > cd april may
    /hist/2011/may/reports >
    -

    vim 快速缩进

    +

    vim 快速缩进

    >>
    向右缩进

    <<
    @@ -819,7 +819,7 @@ $ 匹配字符串的最后面。

    文本靠左

    :ri (right)
    文本靠右

    -

    vim 编辑多个文件

    +

    vim 编辑多个文件

    :n
    编辑下一个文件

    :N
    @@ -836,7 +836,7 @@ $ 匹配字符串的最后面。

    显示正在编辑的文件名

    :f new.txt
    重命名当前文件为 new.txt

    -

    vim 加密文件

    +

    vim 加密文件

    $ vim -x file1
    创建加密文档 file1

    set cm=blowfish2 (newest)
    @@ -856,7 +856,7 @@ $ 匹配字符串的最后面。

    //posts/2018-10-05-refactor-blog/ 利用十一的时间,重新整理了一下个人博客的页面。

    看了一下,上一篇文章还是在 2015 年 8 月,到现在已经有三年多了,我真是。。。唉

    -

    入坑 Linux

    +

    入坑 Linux

    记得最早接触 Linux 是在 2012 年,当时是上计概课要写代码,于是心血来潮地在电脑上安装了 Fedora(话说那时 Fedora 的版本号才是 17),然后就掉进了 Linux 的坑里一去不复返。而注册 Github 的时间是在 2013 年 8 月 15 日,具体什么原因已经不记得了。。。

    后来想找一款能够听歌的软件,那时网易云音乐还没有出 Linux 版,FZUG 也还没有成立,我在网上偶然间发现了一款可以听歌、而且还是可以听网易云音乐的软件,那就是 kwplayer。看了下 commit,第一次提交是在 2013 年 8 月 29 号:inited。而我应该是在10月份的时候发现的,至于在哪儿找到的已经完全不记得了。

    还记得第一次提交 Issue 是 #11#12,当时只是发现 Github 上有个可以提交 Bug 的地方,于是就随手开了两个 Issue,没想到当天都得到了详细的回复,并在三四天后都得到了解决:9c21c4f90a02a8

    @@ -864,24 +864,24 @@ $ 匹配字符串的最后面。

    刚又看了一下,我在 copr 上最早的一次 build 是在 2014 年 3 月 31 号,而我能够找到的最早介绍 copr 的中文资料是 Fedora Copr,现在的 copr 网址上线是在 2013 年 12 月, FZUG 的 mosquito 也是从 2014 年 6 月才开始建立他的 myrepo 的,话说国内比我更早开始使用 copr 的应该不多吧。。。

    话说那时 XuShaohua 的 Github 账户名还是叫 LiuLang,后来他去了 Deepin,网易云音乐的 Linux 版他应该是作者之一。

    当然后来因为各种原因我不再维护我的 copr 仓库,包括犯懒(反正有了 mosquito 的 myrepo 源,以及后来的 FZUG 源)、Fedora 的习惯性跳票让我非常不爽(这是在找借口么。。。)等等,加上后来我从 Fedora 转到了 Arch Linux 上(大概是 2015 年暑假吧),这个仓库就彻底荒废了。

    -

    博客的建立

    +

    博客的建立

    最早的一些记录文章我都发在了 QQ 空间里,显得格格不入的。后来就想找一个合适的可以放这些东西的地方。

    期间考虑过 WordPress,不过觉得比较麻烦,还需要有地方托管;考虑过一些博客托管平台,不过没有找到太喜欢的;觉得 Blogger 不错,但又被 W 掉了。。。

    后来看到阮一峰的的介绍文章:搭建一个免费的,无限流量的Blog----github Pages和Jekyll入门,觉得这是个不错的选择,于是就开始折腾 Github Pages。作为一个审美盲与选择困难症患者,在众多的 Jekyll 主题中完全不知道该怎么选择,于是就随手选了一个自己觉得比较简洁明了的,也就是 ellochen 的博客主题,直接 copy 过来就用了。

    嗯,说好听点叫简洁,说不好听呢就叫难看。。。😭

    话说 ellochen 的 Github 账号已经不存在了,貌似是已经注销了,但好在还存留有 Fork(话说这就是 Fork 相较于 Star 的好处吧,我之前也有一些被删的 repo 是这么存留下来的,嗯,我指的不是 phuslu 大神,指的是垠神。。。),豆瓣小站 Gode-Mode 貌似是他建立的。

    -

    博客的重构

    +

    博客的重构

    在那之后,博客的页面也小幅修改过几次,但大的主题方面都没有变过。曾经有想过重新选一个更好看的主题,但碍于时间原因一直没有去做。
    期间也在其他的 Page 中也曾经尝试过其他的主题,比如 HMFAYSAL OMEGA,整体不错,但有些华而不实了;也试过 coleslaw,但又太过简单了。

    直到第一次看到 NexT 主题,就像这个,真的把我惊艳到了,流畅的载入动画,自动展开并追随页面更新的目录,再加上简洁没有多余内容的页面,完全符合我对自己的博客的预期啊。于是最终决定就用这个主题了。

    不过 NexT 的主页 theme-next.org 目前显示 Under Construction,没有最新的文档只有根据旧文档、网上的教程还有源代码自行摸索,网上很多教程和解决方案都是过时的,只好自己边做边摸索了。

    然后发现,NexT 的配置又有一大堆,这简直就是在为难选择困难症的患者啊。。。

    -

    方案选择

    +

    方案选择

    NexT 主题总共有 4 种方案:Muse,Mist,Pisces 和 Gemini,为选哪一个我纠结了有近 1 个小时,对比各个博客样例,又在本地挨个试了好几遍,去找它们的不同点。最后发现,Muse 和 Mist 可以算一类,目录都在右侧,可以选择动态载入,也可以选择直接显示或隐藏。Muse 的布局相对宽松一点,顶部标题栏也比较大;Mist 相对紧凑一点,所有标题和标签都放在了最顶上的一栏里。而 Pisces 和 Gemini 又可以算一类,目录和标题栏恒在左边,右边是正文,Pisces 的页面和前两个比较相似,纯黑白布局,连贯性很强;而 Gemini 则更传统一些,每篇文章之间分的清清楚楚。

    最终我选择了 Gemini 方案,原因是我觉得目录的动态载入虽然显得比较高级,但文章整体左移的那一下还是显得有些晃眼了,而且目录在右、正文在左的布局让我有些不太习惯;而不用 Pisces 的原因则是文章之间没有明显的分界线,文章中的小标题也不是很显著,于是最后暂定了 Gemini 方案。(嗯,暂定,说不定那天我有回来打自己的脸了)

    -

    插件

    +

    插件

    应该说,折腾这些插件是最费时间的,不但要面临各种选择,还要面临选完了发现用不了然后又得换的状况。。。有些插件本身有问题,需要手动修改才能使用,有些则根本不知道该怎么改。。。

    -

    数学

    +

    数学

    数学公式的渲染最开始是打算用 MathJax,和以前保持一致就可以了。本来没有问题,但后来在利用 Travis-CI 自动部署的时候发现,远程安装的 pandoc 的版本不对,没有办法正确渲染,又找不到解决的办法,于是只能弃之而选择 katex。katex 其实我之前就听说过,据说比 MathJax 要快很多(公式一多的话 MathJax 确实太慢了),不过现在 0.10.0-rc1 的版本。由于前面的几篇文章里面还没有数学公式,我还没有真正试验过。

    另外吐槽一句,npmjs 上的 hexo-renderer-markdown-it 的版本太老了,直接安装 Github 上的版本就可以了,这个插件已经更新了,但仓库里的模块还没有更新。

    $ cat package-lock.json | jq .dependencies.\"hexo-renderer-markdown-it\"
    {
    "version": "github:hexojs/hexo-renderer-markdown-it#89a5abe048f5a43b42328ad012fb445ded6e665b",
    "from": "github:hexojs/hexo-renderer-markdown-it",
    "requires": {
    "lodash.assign": "^4.2.0",
    "markdown-it": "^8.4.1",
    "markdown-it-abbr": "^1.0.4",
    "markdown-it-cjk-breaks": "^1.1.0",
    "markdown-it-container": "^2.0.0",
    "markdown-it-deflist": "^2.0.3",
    "markdown-it-emoji": "^1.4.0",
    "markdown-it-footnote": "^3.0.1",
    "markdown-it-ins": "^2.0.0",
    "markdown-it-mark": "^2.0.0",
    "markdown-it-sub": "^1.0.0",
    "markdown-it-sup": "^1.0.0",
    "sluggo": "^0.2.0"
    }
    }
    @@ -890,30 +890,30 @@ $ 匹配字符串的最后面。

    才行。

    不过我不喜欢一点进来就到文章半截的模式,所以对我来说没有什么影响,还是乖乖地写 description 吧。

    另外这一部分文档严重不足,只能看自带 wiki 和 markdown-it 的例子来写。

    -

    评论

    +

    评论

    关于评论模块,暂时还是采用了 Disqus 的评论系统,好处是不用折腾,因为是以前就配置好的,直接用就可以了,而且功能也足够强大,不过也有几个问题:

    • 必须登录才能评论。不过我看到有文章说 Disqus 现在支持匿名评论了,有时间再去看一下。
    • 被 W。这个是最主要的问题,目前看来解决方案有两个,一个是利用其他的服务器转发一下,例如 fooleap/disqus-php-api,另一个是换用其他的评论系统,比如 gitment/gitalk 或者 Valine,不过这次没有时间在折腾了,留待有时间再解决吧。
    -

    Pangu

    +

    Pangu

    这是一个不错的模块,来自与 pangu.js,可以在英文和中文之间自动加入空格,让中英文的混排看起来更舒服一下。

    -

    Han

    +

    Han

    汉字排版模块,可以调整中文页面的布局,提供了着重号、拼音上标等功能,来自 Han。 我比较看中的着重号的功能,因为在英文中,强调使用斜体表示的,就像emphasize这样,而中文一旦斜体就会变得非常难看。因此如果用着重号的话会好看很多。

    不过这个插件折腾了我足足半天,原始的 css 文件能够加着重号,但是会把页面变得非常拥挤;theme-next-han 里的 css 文件倒是不会改变页面布局,但是着重号的功能却没有了。于是我去翻了源代码,然后发现,为了解决 #1645#1780 把很多有用的内容也删掉了,问题倒是解决了,但剩下的基本上就没有什么作用了。于是我又去翻了 Han 的源码,发现只要把 well-knit 模块禁掉就可以了,于是又生成了新的 han.min.css 文件,使之能够正常显示。

    话说我这篇文章写了得有两天的时间,中间有大一部分时间就是去弄这个了。

    -

    canvas-nest

    +

    canvas-nest

    背景动态渲染,来自 canvas-nest.js。以前看别人的博客遇到这个觉得很好玩,于是这次自己也就加上了。

    不过遗憾的是,Gemini 的博文部分是不显示背景的,好像是把底层背景覆盖了。试了一下四种方案,好像只有 Gemini 是这个样子。。。

    -

    note

    +

    note

    可以插入提示块,效果如 在hexo-NexT中插入note提示块 中所示,还是很有用的。不过在文档中完全没有提到,要不是仔细翻看配置文件根本发现不了。

    -

    reading-progress

    +

    reading-progress

    可以在最上方显示阅读的进度条,以前也用过,这次也就加上了。

    -

    自动部署

    +

    自动部署

    关于 GitHub Pages 的部署,我将源代码存储在 source 分支,然后利用 Travis-CI 自动构建并部署到 master 分支。具体看参见 使用Travis CI自动部署Hexo博客,基本上 copy 过来就可以了。

    另外,我的主题是 Fork 的 Next 的主题,然后在上面进行修改,在用 git submodule 引入进来,结果好几次自动部署失败都是因为修改完主题之后忘记 push 了。。。

    而 GitLab Pages 的部署则要简单许多,只需要照着官方的例子写一个 .gitlab-ci.yml 文件就可以。

    -

    待改进的部分

    +

    待改进的部分

    还有一些部分模块这次没有时间弄了,留着下次有时间再解决吧。一部分现在能想到的我先列举在这里,省得以后又忘了:

    • 字数统计
    • @@ -991,16 +991,16 @@ $ 匹配字符串的最后面。

      //posts/2018-10-29-Hexo-NexT-1/ 最近一个月,空余的时间都用来折腾这个博客了。作为一个本身对前端一窍不通的人,也是都能对照文档和其它的博客来修改自己博客的配置,真是心累的不行。虽然很多问题在网上都能够找到比较好的解决方法,但也有很多内容完全是过时的,也有一些藏得比较深,不是那么好找。

      于是决定趁着还有印象的时候,把自己折腾的过程记录下来,不要像之前一样,自己写的东西,过了一年之后自己都记不起来当时是怎么想的了。。。

      -

      包管理

      +

      包管理

      开始一直在使用 npm 来安装依赖包,还为是否应该把 package-lock.json 添加的 git 仓库查找了半天。直到很偶然的一次,突然发现还可以用 yarn 来管理一来包,看了一下感觉不错,于是决定切换到 yarn。

      然后发现,我的 git 仓库里居然已经有了 yarn.lock 这个文件,什么???

      再去搜索才发现,yarn 很早就作为 hexo 的默认包管理器了,只要系统有安装 yarn 的话,就采用 yarn 而不是 npm 作为包管理器。

      然而在网上能够找到的大部分教程中,安装依赖包还都是用 npm,而且还都带着 --save 的参数。我开始不知道有什么作用,然后一搜索,发现这个参数早就过时了,从 npm 5.0.0 之后就已经不需要了,只是为了兼容性还保留着这个参数。

      -

      启用搜索功能

      +

      启用搜索功能

      参见 Hexo NexT 魔改系列之二 ── 搜索篇

      -

      启用评论功能

      +

      启用评论功能

      参见 Hexo NexT 魔改系列之三 ── 评论篇

      @@ -1020,7 +1020,7 @@ $ 匹配字符串的最后面。

      Next主题本身集成了三种搜索插件:Swiftype,Algolia和本地搜索。

      Swiftype只能试用14天,Aloglia好像也开始收费了(更新:社区版免费,但有限制),能有的就只有本地搜索了。

      不过好在目前博客的文章还不算多,本地搜索还是可以承受的。

      -

      启用本地搜索

      +

      启用本地搜索

      启用本地搜索的方法很简单,先安装hexo-generator-search

      注意不是hexo-generator-searchdb,前者来自于wzpan/hexo-generator-search,而后者来自于theme-next/hexo-generator-searchdb。后者已经一年多没有更新了,而前者还在更新,并且增加了仅搜索标题的功能。

      yarn install hexo-generator-search
      @@ -1037,14 +1037,14 @@ $ 匹配字符串的最后面。

    • field是搜索的范围,默认是post,即只搜索发布的文章,也可以改为page(搜索页面,即 page 类型的页面,不含发布的文航)或者all(搜索全部)
    • content是指是否搜索文章的内容,默认为true,如果改为false的话则只搜索标题、说明等头部内容,不搜索文章的正文。
    -

    解决能够正常搜索,但无法正常跳转的问题

    +

    解决能够正常搜索,但无法正常跳转的问题

    这样配置完了之后,我发现搜索功能没有问题,但搜索出来的结果没有办法正确跳转。查看了一下生成的search.xml,发现生成的链接多了一个/,就像这样:

    <link href="//posts/2018-10-24-prime-of-the-form-6k1/"/>
    <url>//posts/2018-10-24-prime-of-the-form-6k1/</url>

    不过在各个教程中都没有找到相应的解决方法,最后在翻issue的时候发现了一个方法,就是在搜索的时候直接去掉一个/就好了。
    修改localsearch.swig的源代码:

    // var articleUrl = decodeURIComponent(data.url);
    var articleUrl = decodeURIComponent(data.url).substring(1);

    真的是简单粗暴啊。。。

    -

    启用Algolia搜索(待更新)

    +

    启用Algolia搜索(待更新)

    最近发现,Agolia搜索的社区版还是免费的,不过暂时本地搜索已经够用了,就不再折腾搜索功能了,留待以后有时间再折腾吧。

    参见主题自带的文档:Algolia 搜索

    @@ -1098,7 +1098,7 @@ $ 匹配字符串的最后面。

    关于gitment的安全性的讨论,参见imsun/gitmentGitment 的安全性争议

    -

    添加utterances评论系统

    +

    添加utterances评论系统

    在搜索gitment的时候,发现了一片utterances的介绍文章,发现这是一个好东西,同样是基于Github的issue系统,但由于是基于Github App构建的,权限控制的颗粒度要细一些,可以只具有读写issue的权限,不需要读写代码的权限,而且可以只在需要的repo中安装。这才是一个合格的评论系统应该有的权限嘛。

    utterances的权限
    DisqusJS
    @@ -1117,9 +1117,9 @@ DisqusJS

    这样就显得好看多了。

    utterances的最终效果图

    utterance默认不会创建issue,而是会在第一次评论的时候自动创建相应的issue,这个也比gitment好用不少。

    -

    使用 Disqus PHP API 进行反代理

    +

    使用 Disqus PHP API 进行反代理

    待更新

    -

    使用 Valine 作为评论系统

    +

    使用 Valine 作为评论系统

    参见:
    Valine: 独立博客评论系统
    @@ -1144,7 +1144,7 @@ DisqusJS

    后来看了太くないお的介绍,感觉我现在的牌风和太くないお很相似,于是决定看他的牌谱。

    由于太くないお是天凤位,升天凤位之前的牌谱可以从天凤官网上直接下载下来。太くないお升天凤位前凤南对战3749战,当然不可能全看,于是我选择了他十段升天凤位的牌谱来看,一共301战。这个时候他的水平也相对比较稳定了,牌谱看起来失误率也会小一些。

    打谱的时候,很开心地发现大部分时候自己的选择都是对的,当然也有一些没有注意的地方,这里拿出来分析一下。

    -

    副露加速

    +

    副露加速

    东2局0本场5巡目

    这是东二局。东一局胡了一个立直一发2600点,东二局下家和对家一上来就开始副露,才到5巡两家就都三副露了。基本上面对三副露,就可以认为都已经听牌了。这时上家打了7p。

    这里太くないお直接吃了这个7p后付,应该主要是考虑手牌的速度。如果不后付的话,这个发很难碰出来,因为发是dora,很有可能直接被人捏死(比如上家就捏了一张发)。所以等到碰出发再考虑听牌,就有些晚了。

    @@ -1152,7 +1152,7 @@ DisqusJS

    东2局0本场9巡目

    不过最终还是先摸3m点了对家。不过3m基本上就是铳双东2000点(除非对家有两张3s),而自家是发dora4满贯的听牌,对日还是没有问题的。

    下家因为先打过1m,后面如果留1m打6m的话会有振听,从而逃过一劫。。。

    -

    牌效率问题

    +

    牌效率问题

    东3局0本场9巡目

    这是东三局9巡,一向听之后上来3s。这里我第一反应是3s模切,但太くないお选择打掉了4p。这是牌效率的问题。

    天凤/牌理

    @@ -1160,7 +1160,7 @@ DisqusJS

    何切る解答機

    如果去查一下kobalab的何切,也会发现,打4p的权重是最高的。

    实际上,接下来下家立直,然后自家摸上8p听牌,因为只有一张4p的两筋,加上自己是四位,dora东也已经出了,所以就直接追立了。最终自摸0m,门胡到了断平dora1的7900点,一举逆一。

    -

    谋求连庄

    +

    谋求连庄

    东4局0本场7巡目

    这是东四局的亲家,7巡是已两向听,进到9m后我的第一反应是打4m,而太くないお则打掉了东。

    这个是简单的牌效率的问题,打4m损失了5m的进章。而且这里是平和dora1的2向听,这时对家和上家还在打幺九牌,下家的牌要快一些(事实上已经一向听了),加之自己是亲家,这里不留字牌全速进攻是没有问题的。

    @@ -1169,17 +1169,17 @@ DisqusJS

    这里上家打了3p,于是吃了打9m,谋求兜听连庄。

    东4局0本场13巡目

    然后上家又打9p可以吃,但是7p并不是安牌,而且是dora周边的牌,没法打出去。但这里需要注意到的是,8s是安牌可以打,于是可以吃到9p打8s单调7p。这里特别需要注意,我们需要的是听牌连庄,而不是胡牌,所以不用考虑听牌的形状,只要不打危险牌然后争取流局听牌就可以了。

    -

    别忘了被吃碰的牌

    +

    别忘了被吃碰的牌

    南2局0本场12巡目

    南二局,处于四位的上家6巡立直,太くないお随即弃胡。到了12巡的时候,手头没有绝安牌了。于是太くないお打了4p。

    我的第一反应是,4p只是半筋啊。然后再仔细一看,3p出了3枚,5p出了3枚,6p出了2枚,所以4p是1p的半筋+的5p的薄壁,安全度还是不错的。

    再看了一会儿,发现上家打过7p我吃了,所以4p实际上是个两筋。。。

    为什么每次找牌都会放掉打出去被吃碰掉的牌,诶。。。

    -

    拆边张搭子

    +

    拆边张搭子

    南3局0本场5巡目

    进到6p,于是四连型5678p变成好型搭子,于是要拆掉一个愚型搭子。那么拆边张的优先度肯定是要大于拆坎张的。而且在拆边张的时候,一般是由内向外打,先打2p再打1p,因为到后面,无筋1p的铳率是要低于2p的。

    而我的第一反应还是打1p,平时在打牌的时候也会犯这样的错误,每次都是刚打完就发现打错了。。。

    -

    总结

    +

    总结

    回顾这一个半庄,基本上出现失误的地方都是在细节的判断上,这也是后面打牌是需要加强的地方.

    ]]> @@ -1215,13 +1215,13 @@ DisqusJS
    太流牌谱学习笔记(二) //posts/2019-09-10-Tai-2/ 今天又看了一些太くないお的牌谱,发现自己的牌效和攻守判断有不小问题。

    -

    两面·顺子⚪单骑

    +

    两面·顺子⚪单骑

    东3局1本场7巡目

    上家打0p,这里太くないお吃了,打1m。

    这里1m比打2m略优,因为245667m可以视为一个三面进章的好型,进358m都可以形成两个面子。

    之前看《琴南幼儿园笔记本》时,里面也提到了这种牌型,就是“两面·顺子⚪单骑”是一个好型,这里即是一个例子

    两面·顺子⚪单骑

    -

    对子的处理

    +

    对子的处理

    南1局1本场6巡目

    这里我的第一反应是模切7p,而太くないお则是手切了4m。

    这里切4m并不损失5m的进章,保留7p则可以保留做7对的可能性。

    @@ -1231,12 +1231,12 @@ DisqusJS

    而根据“双雀头最强”的理论(2ヘッド理論),这里保留7p和2s两个雀头牌效是最高的。

    南1局1本场9巡目

    之后又进到了7m,这里切7p比且切7m略好一点。因为这里打掉7p之后,减少了2枚7p的进张,多了67m共3枚进张。另外需要注意的是,这时58p已现4张,虽然还是两面听牌,但已经和愚型听牌差不多了。

    -

    防守的意识

    +

    防守的意识

    南2局0本场10巡目

    2巡前下家碰4s打红中,然后上家碰了中打6m。这里我还在考虑切9p进攻的时候,太くないお直接打了8p防守。

    仔细想一下,已经到了中盘,下家断幺副露后切了字牌,之后一直模切,应该有50%的概率听牌,至少也是一向听。上家也是类似的情况。而这里自家的手牌还是2个愚型的3向听,因此这里的确应该考虑弃胡了。

    实际上,这里下家是断幺Dora2的一向听,而上家已经是中Dora2听牌。

    -

    总结

    +

    总结

    从自己打牌的经历来看,对于防守的判断还停留在有人立直才防守的层面上,对于其他情况,比如副露的防守还不是很有意识。

    另外,当自己的牌不好的时候,就应该提前考虑弃胡,而不是强行进攻,这点在之后打牌的时候务必要注意。

    ]]>
    @@ -1253,24 +1253,24 @@ DisqusJS
    牌谱反思(二) //posts/2019-09-14-Paipu-review-2/ 今天终于有时间,打了两把雀魂,吃了两个二。

    -

    遇dora弃胡

    +

    遇dora弃胡

    南2局0本场12巡目

    上家6巡立直,自家随后听牌,听的是上家的现物47p,而且只有平和一番,dora 2s一张未现,于是没有立直,准备看看有没有可能偷到现物。

    之后几巡都没有摸到太危险的牌,打过一次筋3s,然后摸到了dora 2s。何切?

    对家在一发巡的时候打过5s,所以2s不可能铳两面。只能铳坎13s、2s对碰或者2s单骑。一旦铳到后两个,则至少是立直dora2/3起,至少3900甚至很可能满贯,而自家只是1000点手牌,显然达不到对日的标准,于是这里只能选择弃胡。

    南2局0本场18巡目

    实际上,上家正是单听2s,如果点了就是立直七对dora2的满贯12000点,那么就给了三位逆二的机会。

    -

    弃胡or进攻

    +

    弃胡or进攻

    东1局0本场11巡目

    这里面对下家十二落抬,摸上生牌9s,是否要弃胡?

    我当时的选择是弃胡,最终流掉了这一把。但事后仔细想一下,下家虽然是四副露听牌,但如果打9s点了,只会是1600点的牌。而自家是平和dora3的一向听,满贯的手牌,因此完全可以和下家对日。

    -

    进攻or弃胡

    +

    进攻or弃胡

    东4局0本场7巡目

    这里连送上家三个碰牌,之后上家打东。这里是碰东进攻,还是直接弃胡?

    我当时的选择是碰东进攻,主要考虑到自家是东dora dora,3900的牌,而上家很可能只是一个对对。当然上家也有可能是对对dora2/3的牌,毕竟8s一张未现。这里其实是有些冲动了,因为连续喂了上家三张牌,心情有些不好,于是就直接冲上去了。

    东4局0本场13巡目

    不过最终还是自摸了2000-1000,赢下了这局。(而上家还在1向听。。。)

    -

    1安≈无安,无安=全攻

    +

    1安≈无安,无安=全攻

    南3局0本场7巡目

    下家立直,这里只有一张5s是安牌,是打5s弃胡,还是直接进攻?

    这里自家3位,下家4位,下家立直后与自家只差1400点,如果下家胡到的话,自己就会四位进入南四,那么All last就必须要胡牌才能避四。

    @@ -1279,7 +1279,7 @@ DisqusJS

    好在发牌姬眷顾,下一巡就摸上了绝张6s,打6m立直后,下家一发巡摸上2s,点了一个5200。

    南3局0本场8巡目
    南3局0本场8巡目

    这里实际上按照牌效应该切6/9m,切6m保dora,切9m有断幺,实际上是番数一样的。从安全度上来说,切6m的危险度更高一点,但切9m点了的话会损失会更大一些。但考虑到断幺之后可以吃碰,这里感觉切9m会更好一些。

    -

    什么叫做“发牌姬搞我”(下家)

    +

    什么叫做“发牌姬搞我”(下家)

    东2局2本场7巡目
    东2局2本场12巡目

    上家立直,下家摸到第四张4p,然后开始弃胡。

    五巡之后,下家已经没有安牌了,于是考虑能否打一个半筋4p,然后一搏四巡——然后就点了一个坎4p。。。

    @@ -1366,12 +1366,12 @@ DisqusJS
    2019 Canada MO 第2题 //posts/2019-12-10-2019-Canada-MO-P2/ - 题目 + 题目

    aabb 为正整数,且满足 a+b3a+b^3 能被 a2+3ab+3b21a^2+3ab+3b^2-1 整除.求证:a2+3ab+3b21a^2+3ab+3b^2-1 能被一个大于 11 的整数的立方整除.[1]

    -

    分析

    +

    分析

    根据题目中 a2+3ab+3b2a^2+3ab+3b^2 的形式,容易看出应该和 (a+b)3(a+b)^3 有关系,从而可以证出 (a+b)3(a+b)^3 能被 a2+3ab+3b21a^2+3ab+3b^2-1

    而本题的难点在于如何证明 a2+3ab+3b21a^2+3ab+3b^2-1 有次数不小于 33 的因子.这里使用了反证法,并对要证明的结论进行了加强,把证明 a2+3ab+3b21a^2+3ab+3b^2-1 中素因子的次数大于 22,转化为证明其大于 (a+b)(a+b) 中对应的素因子的次数的 22 倍,从而更容易导出矛盾.

    -

    解答

    +

    解答

    T=a2+3ab+3b21T=a^2+3ab+3b^2-1,则

    (a+b)3=a3+3a2b+3ab2+b3=a(a2+3ab+3b2)+b3=a(T+1)+b3=aT+(a+b3) \begin{aligned} \left( a+b \right)^3 &= a^3+3a^2b+3ab^2+b^3 \\ @@ -1429,9 +1429,9 @@ M834 80h400000v40h-400000z'/>

    显然,这个学生的错误是很明显的.但这也带来了一个问题:如果按照学生所想的,那么面积应该是多少?

    那么首先需要确定的是,它的边界到底是什么?

    -

    边界曲线

    +

    边界曲线

    我们只考虑第一象限的情况.

    -

    解法一

    +

    解法一

    这个区域的边界,应该是取最靠外的点,或者是,最靠上的点.于是我们可以想办法求出,在每一个 xx 处,对应的 yy 的最大值.

    设线段的方程为

    xa+y3a=1(1)\frac{x}{a}+\frac{y}{3-a}=1 \tag{1} @@ -1525,7 +1525,7 @@ H400000v40H845.2724 s-225.272,467,-225.272,467s-235,486,-235,486c-2.7,4.7,-9,7,-19,7 c-6,0,-10,-1,-12,-3s-194,-422,-194,-422s-65,47,-65,47z M834 80h400000v40h-400000z'/>.(2)

    -

    解法二

    +

    解法二

    实际上,这个边界是所有满足条件的线段的包络线

    设线段所在直线的方程为

    F(x,y,a)=(3a)x+aya(3a)=a2(xy+3)a+3x=0\begin{aligned} @@ -1546,7 +1546,7 @@ M834 80h400000v40h-400000z'/>

    其图像如下:

    可以验证,方程 (3)(3) 和我们前面求出的方程 (2)(2) 是一致的.

    -

    解法三

    +

    解法三

    设直线方程同解法二,注意到对于每一个 (x,y)(x,y),有且仅有一个 aa 满足条件.于是有

    Δ=(xy+3)212x=0 \Delta=(x-y+3)^2-12x=0

    @@ -1555,7 +1555,7 @@ M834 80h400000v40h-400000z'/>

    此解法的出处
    此处称该曲线为绣曲线,但我只在此处和中文维基百科的包络线里面见到了这个名词.目前还不清楚这是否是通用的名词.

    -

    围出的面积

    +

    围出的面积

    第一象限所求的面积,就相当于边界和 xx 轴所夹的面积,因此

    S=03(3+x+23x)dx=[3x+12x2+2323(3x)32]03=9+4.5+4=22.5\begin{aligned} S &= \int_0^3 \left(3+x+2\sqrt{3x}\right)\mathrm{d}x \\ @@ -1576,7 +1576,7 @@ s-225.272,467,-225.272,467s-235,486,-235,486c-2.7,4.7,-9,7,-19,7 c-6,0,-10,-1,-12,-3s-194,-422,-194,-422s-65,47,-65,47z M834 80h400000v40h-400000z'/>)dx=[3x+21x2+3232(3x)23]03=9+4.5+4=22.5

    于是四个象限的区域面积一共是 22.5×4=9022.5\times 4=90

    -

    曲线的类型

    +

    曲线的类型

    很明显,这是一条二次曲线的一部分.经过仿射变换

    {x=xy=xy+3 \begin{cases} x'=x \\ @@ -1637,11 +1637,11 @@ s-225.272,467,-225.272,467s-235,486,-235,486c-2.7,4.7,-9,7,-19,7 c-6,0,-10,-1,-12,-3s-194,-422,-194,-422s-65,47,-65,47z M834 80h400000v40h-400000z'/>

    于是原抛物线的焦点是 (32,0)\left(\dfrac{3}{2},0\right),准线为 y=xy=x

    -

    问题拓展

    +

    问题拓展

    在高中学习抛物线的时候,有这样一道题目:

    对于抛物线 y2=2pxy^2=2px,过点K(p2,0)K\left(-\dfrac{p}{2},0\right) 作抛物线的两条切线,切点分别为 AABB,过抛物线在两切点之间的部分上的任意一点,作抛物线的切线,分别交 KAKAKBKBMMNN,求证: KM+KN\left|KM\right|+\left|KN\right| 为定值.

    -

    证明

    +

    证明

    抛物线在 (x0,y0)\left(x_0,y_0\right) 处的切线是 MN:y=py0(x+x0)MN: y=\dfrac{p}{y_0}\left(x+x_0\right).易知经过 KK 的两条切线的方程为 y=±(x+p2)y=\pm\left(x+\dfrac{p}{2}\right),从而可解得交点的纵坐标为 yM,N=p2x0±1y0py_{M,N}=\dfrac{\dfrac{p}{2}-x_0}{\pm 1-\dfrac{y_0}{p}},因此

    KM+KN=2yMyN=2p\left|KM\right|+\left|KN\right|=\sqrt{2}\left|y_M-y_N\right|=\sqrt{2}p

    为定值.

    -

    与前面的联系

    +

    与前面的联系

    其实仔细观察一下就会发现,抛物线这道题里面的 MNMN,就是我们方程 (1)(1) 所对应的线段,所有满足条件的 MNMN 的包络线就是抛物线在 AABB 之间的部分!

    ]]> @@ -1738,7 +1738,7 @@ M834 80h400000v40h-400000z'/> 在正方形的题目中,有很常见的一类是和两个正方形有关的图形,如下图:

    图1

    在这个图形中,有很多有意思的性质,也衍生出了很多的题目.我们讲分几次一一道来.

    -

    「手拉手」模型

    +

    「手拉手」模型

    在学习全等的时候,我们知道有一类很重要的全等模型——旋转全等模型,俗称「手拉手」模型.说的是两个共顶点且顶角相等的等腰三角形,一定伴随着一组旋转全等,如图2

    图2

    ABC\triangle ABCADE\triangle ADE 是两个顶角相等的等腰三角形,易证 ABDACE\triangle ABD \cong \triangle ACE .这是一个旋转全等,旋转角度等于两个等腰三角形的顶角角度.

    @@ -1746,11 +1746,11 @@ M834 80h400000v40h-400000z'/>

    那么,对于两个共顶点的正方形,也有类似的结论.在图1中,我们可以把它看成是两个等腰直角三角形 ABEABEACGACG 的「手拉手」,于是就有 ABGAEC\triangle ABG \cong \triangle AEC,而且旋转角度为 9090^\circ

    图3

    于是,我们就得到了一个对角线垂直且相等的四边形 BCGEBCGE

    -

    和中点四边形相关的问题

    +

    和中点四边形相关的问题

    熟悉中点四边形的朋友马上就会想到,这样一个四边形的中点四边形一定是一个正方形,也就是下面这个图:

    图5

    在这个图中,中点四边形 MPNQMPNQ 就是一个正方形.

    -

    另一个和中点相关的问题

    +

    另一个和中点相关的问题

    图1中,如果我们取 EGEG 的中点 PP ,连结 APAP ,则 APBCAP \perp BCAP=12BCAP = \dfrac{1}{2} BC.(如果取 BCBC 中点,有类似的结论)

    图5

    对于中点问题,我们知道一种常见的处理方法就是「倍长中线」,因此我们倍长 APAPHH,可以证明 GHAABC\triangle GHA \cong \triangle ABC.注意这是一个旋转 9090 ^\circ 的全等,因此 AHAHBCBC 垂直且相等,所以上面的结论成立.

    @@ -1768,13 +1768,13 @@ M834 80h400000v40h-400000z'/>

    这两个证明同时还都证明了另一个结论,就是 SABC=SAEGS_{\triangle ABC} = S_{\triangle AEG}.由割补法知这两个三角形的面积的确是相等的.

    当然,如果熟悉三角函数的话,这两个三角形的面积相等是显然的.因为 BAC\angle BACEAG\angle EAG 互补,而角的两边对应相等,因此面积也是相等的.

    -

    变形一

    +

    变形一

    前面我们说了 BCGEBCGE 是一个对角线垂直且相等的四边形,因此,这个题的可以这样来出:

    图8,在四边形 ABCDABCD 中,ACBDAC \perp BD,且 AC=BDAC=BD,分别取 ADADBCBCABAB 的中点 MMNNPP,分别过 MMNNADADBCBC 的垂线交于 OO,则 POCDPO \perp CD

    图8

    这个图如果把 OAOAOBOBOCOCODOD 都连起来,显然有 OACOBD\triangle OAC \cong \triangle OBD,注意这是一个旋转 9090^\circ 的全等,因此 OAD\triangle OADOBC\triangle OBC 都是等腰直角三角形.于是这就变成了图5一样的图了,后面的证明和上面相同.

    图9 -

    变形二

    +

    变形二

    如果我们把两个正方形中间再加一个小正方形,那么结论会变成什么样子?

    图10,有三个正方形 ABCDABCDAEFGAEFGFHIJFHIJ,取 JDJD 中点 PP,则有 PEBHPE \perp BHPE=12BHPE = \dfrac{1}{2} BH

    图10 @@ -1784,7 +1784,7 @@ M834 80h400000v40h-400000z'/>

    图11,我们倍长 EPEPKK,可以类似地证明 JKEGBH\triangle JKE \cong \triangle GBH

    不过在证明的时候需要注意,这里面隐藏着两个「手拉手」的全等模型,在证明上面的全等的时候需要用到,如图12,有 ADEABG\triangle ADE \cong \triangle ABGFJEFGH\triangle FJE \cong \triangle FGH,都是旋转 9090^\circ 的全等.

    图12 -

    拓展联想

    +

    拓展联想

    在圆的内接四边形中,有一个类似的结论:

    若圆内接四边形的对角线相互垂直,则垂直于一边且过对角线交点的直线将平分对边.

    这就是 Brahmagupta 定理,一般译作「婆罗摩笈多定理」,或者「布拉美古塔定理」.

    @@ -1823,15 +1823,15 @@ M834 80h400000v40h-400000z'/>

    图2

    我们注意到,这个图形只跟下半部分(或者上半部分有关),因此这类题目经常以两个「等腰直角三角形」的形式出现,如图3

    图3

    -

    证明方法

    +

    证明方法

    这个题的解决方法也有很多,可以用「倍长中线」,可以构造「三角形的中位线」,也可以构造「梯形中位线」.

    -

    倍长中线

    +

    倍长中线

    图4,倍长 BPBPKK,可以证明 ABCFKC\triangle ABC \cong \triangle FKC,注意这是一个旋转 9090^\circ 的全等,因此 CBCBCKCK 垂直且相等,我们得到了一个等腰 RtCBK\mathrm{Rt} \triangle CBK ,于是它的一半 PCB\triangle PCB 也是一个等腰直角三角形.

    图4

    -

    构造三角形的中位线

    +

    构造三角形的中位线

    图5,分别取 ADADAFAF 的中点 MMNN,可以证明 PMBCNP\triangle PMB \cong \triangle CNP.注意这又是一个旋转 9090^\circ 的全等,因此 PBPBPCPC 垂直且相等.

    图5

    -

    构造梯形的中位线

    +

    构造梯形的中位线

    图6,分别过 DDFFAABCBC 的垂线,垂足依次为 JJKKLL,则有弦图的模型可知,BJDALB\triangle BJD \cong \triangle ALBFKCCLA\triangle FKC \cong \triangle CLA,于是 BJ=AL=CKBJ = AL = CKDJ=BLDJ = BLFK=CLFK = CL.我们取 BCBC 的中点 QQ,于是 QQ 也是 JKJK 的中点,因此 PQPQ 是梯形 DJKFDJKF 的中位线,故 PQBCPQ \perp BC,且

    PQ=12(DJ+FK)=12(BL+CL)=12BC=BQ=CQ\begin{aligned} PQ &= \dfrac{1}{2} \left( DJ + FK \right) = \dfrac{1}{2} \left( BL + CL \right) \\ @@ -1840,17 +1840,17 @@ M834 80h400000v40h-400000z'/>

    因此 PCB\triangle PCB 是等腰直角三角形.

    图6

    -

    变形

    +

    变形

    我们需要注意的是,当这两个等腰 RtABD\mathrm{Rt} \triangle ABDACF\triangle ACF 旋转到不同的位置的时候,这个图可能看起来变得完全不一样,但是本质上是一个图形,如图7~图10

    图7

    图8

    图9

    图10

    -

    推广

    +

    推广

    图3中,ABD\triangle ABDACF\triangle ACF 都是等腰直角三角形.如果我们把这个条件进行弱化,去掉等腰的条件,但保持两个直角三角形是相似的,即 RtABDRtACF\mathrm{Rt}\triangle ABD \sim \mathrm{Rt}\triangle ACF (其实就是 ADB=AFC\angle ADB = \angle AFC),那么 PB=PCPB = PC 的结论依旧成立.

    图11

    这个时候的解决方法和前面也是类似的.

    -

    倍长中线

    +

    倍长中线

    这个方法和图4类似,只不过把要证明的全等变成了相似.

    图12,倍长 BPBPKK,则

    KFFC=DBFC=BAAC\frac{KF}{FC} = \frac{DB}{FC} = \frac{BA}{AC} @@ -1866,7 +1866,7 @@ M834 80h400000v40h-400000z'/>

    因此 KFCBAC\triangle KFC \sim \triangle BAC.这是一个旋转 9090^\circ 的相似,于是 BCK\triangle BCK 是直角三角形,CPCP 是其斜边中线,故 CP=12BK=PBCP = \dfrac{1}{2} BK = PB

    图12

    -

    构造三角形的中位线

    +

    构造三角形的中位线

    这个方法和图5完全一样,BM=12AD=PNBM = \dfrac{1}{2} AD = PNMP=12AF=NCMP = \dfrac{1}{2} AF = NC,且

    BMP=BMA+AMP=2BDA+AMP=2CFA+ANP=CNA+ANP=PNC\begin{aligned} \angle BMP &= \angle BMA + \angle AMP \\ @@ -1878,7 +1878,7 @@ M834 80h400000v40h-400000z'/>

    因此 BMPPNC\triangle BMP \cong \triangle PNC,于是 PB=PCPB = PC

    图13

    -

    构造梯形的中位线

    +

    构造梯形的中位线

    这个方法和图6类似,不过也是要把证明的全等变成相似.

    图14BJDALB\triangle BJD \sim \triangle ALBFKCCLA\triangle FKC \sim \triangle CLA,于是

    BJAL=BDAB=CFAC=CKAL\frac{BJ}{AL} = \frac{BD}{AB} = \frac{CF}{AC} = \frac{CK}{AL} @@ -1918,18 +1918,18 @@ M834 80h400000v40h-400000z'/> //posts/2020-04-03-Two-squares-3/ 在上一篇文章的最后,我们留了一个问题,就是如果仅保留等腰的条件,是否还有比较好的结论?

    要解决这个问题,我们先从一种特殊情况谈起.

    -

    一种特殊情况

    +

    一种特殊情况

    当两个等腰 RtABD\mathrm{Rt} \triangle ABDACF\triangle ACF 旋转的时候,一种非常特殊的情况就是两个三角形的斜边共线的情况,如图1

    图1

    这个时候上面的结论依旧成立,而且我们注意到这个时候 BAC=90\angle BAC = 90^\circ,因此如果我们取 BCBC 的中点 QQ,则有 QA=12BC=QPQA = \dfrac{1}{2} BC = QP,也就是说 APQ\triangle APQ 是一个等腰三角形.

    熟悉四点共圆的朋友马上就会想到,这里面 ABCPABCP 四点共圆,圆心恰好就是 QQ

    图2

    -

    逆命题

    +

    逆命题

    那我们反过来想一下,如果取 ABC\triangle ABC 的外接圆和 DFDF 交于 PP,那么 PP 点是否一定是 DFDF 的中点?

    图3

    如果考虑同一法的话,很明显这个结论是成立的.

    那如果不用同一法呢?

    -

    构造梯形的中位线

    +

    构造梯形的中位线

    一种方法是构造梯形的中位线.我们分别过 BBCCQQDFDF 的垂线,垂足依次为 MMNNTT,则 CTCT 是梯形 BMNCBMNC 的中位线,且 MMNNTT 分别是 ADADAFAFAPAP 的中点,于是

    PD=2MT=2NT=2(ANAT)=AFAP=PF\begin{aligned} PD &= 2MT = 2NT = 2 \left( AN - AT \right) \\ @@ -1939,14 +1939,14 @@ M834 80h400000v40h-400000z'/>

    因此 PPDFDF 的中点.

    图4

    另一种方法是构造旋转相似,这种方法放到我们后面的推广里来讲.

    -

    一种推广

    +

    一种推广

    如果要保持四点共圆的条件不变,我们可以把条件弱化成什么样子?

    注意如果要保持四点共圆的话,我们要保持 BAC=90\angle BAC = 90^\circ,因此两个等腰三角形的两底角要保持互余,也就是两顶角要保持互补.

    因此,我们可以把两个等腰直角三角形的条件改为,两个「顶角互补的等腰三角形」:

    图5

    图5中,AB=BDAB = BDAC=CFAC = CFABD+ACF=180\angle ABD + \angle ACF = 180^\circ,我们分别取 BCBCDFDF 的中点 PPQQ,则 BPC=90\angle BPC = 90^\circ,且 AQ=QPAQ = QP

    我们可以利用上一篇文章中的三种方法,对这种情况进行证明.因为方法几乎是一样的,这里就从略了.

    -

    继续推广

    +

    继续推广

    我们回顾一下图4的证明,这种方法本质上就是用了三个等腰 ABD\triangle ABDACF\triangle ACFAPQ\triangle APQ 的条件,因此我们可以把条件再进行弱化,如下图:

    图6

    图6ABD\triangle ABDACF\triangle ACF 都是等腰三角形,AB=BDAB = BDAC=CFAC = CFQQBCBC 的中点,则

    @@ -1956,7 +1956,7 @@ M834 80h400000v40h-400000z'/>

    同时,大家可以想一下,这个图形和我们上一篇文章中里的图形有什么区别和联系.

    -

    倍长中线

    +

    倍长中线

    这个时候,倍长中线的方法依旧可以使用,不过这个时候,应该要倍长 AQAQ

    图7

    @@ -1980,7 +1980,7 @@ M834 80h400000v40h-400000z'/>

    PQ=12AK=AQPQ = \dfrac{1}{2} AK = AQ

    如果已知 QA=QPQA = QP,由 QK=QA=QPQK = QA = QP 可知 KPA=90\angle KPA = 90^\circ,再由「三线合一」可知 PD=PFPD = PF

    -

    构造三角形的中位线

    +

    构造三角形的中位线

    这个时候我们没有办法利用中位线直接证明 QA=QPQA = QP,但是我们可以分别取 ADADAFAF 的中点 MMNN,先证明 QM=QNQM= QN

    图8

    我们分别取 ABABACAC 的中点 SSTT,于是可以证明 MSQQTN\triangle MSQ \cong \triangle QTN.其中 MSQ=QTN\angle MSQ = \angle QTN 的证明和上一个方法类似.

    @@ -1994,13 +1994,13 @@ M834 80h400000v40h-400000z'/>
    QA = QP &\implies \mathrm{AAS} \end{aligned}

    -

    两种方法的联系

    +

    两种方法的联系

    实际上,如果我们把上一种方法的图和这一种方法的图放在一起,就会发现这两组三角形其实是相似的.

    图9

    -

    构造梯形的中位线

    +

    构造梯形的中位线

    这种方法和图4的证明是一样的,这里就不在重复了.

    可以看出,这是最简单的一种证明方法.

    -

    构造旋转相似

    +

    构造旋转相似

    这个图还有一个证明方法,就是构造 AA 关于 BCBC 的对称点 SS,如图10,则

    SBD=2SAD=2(180SAF)=SCF\begin{aligned} \angle SBD &= 2\angle SAD \\ @@ -2027,7 +2027,7 @@ M834 80h400000v40h-400000z'/>

    图11

    这种方法大量用到了相似和圆周角的性质,由此又可以引申出关于双圆问题的一些结论.有兴趣的朋友可以自行探究一下.

    -

    和前文图形的关系

    +

    和前文图形的关系

    我们回过头来看一下图8,注意在这个图中我们平没有用到 DDFF 这两个点,因此我们考虑把这两个点去掉,于是这个图就变成了下面这样:

    图12

    图12AMB\triangle AMBANC\triangle ANC 都是直角三角形,且 MMAANN 共线,取 BCBC 的中点 QQ,则 QM=QNQM = QN

    @@ -2050,22 +2050,22 @@ M834 80h400000v40h-400000z'/> //posts/2020-04-07-Midpoint-in-trapezoid/ 在前面的三篇文章中,我们探究了和正方形有关的中点问题.在本文中,我们来看一个和梯形有关的中点问题.

    和梯形相关的中点问题,主要可以分为「底中点」和「腰中点」两大类.对于「底中点」相关的问题,我们合并到下一篇关于一般四边形的中点问题的文章中一起来讨论.今天我们重点来看一下和「腰中点」有关的问题.

    -

    「腰中点」的处理方法

    +

    「腰中点」的处理方法

    对于「腰中点」相关的问题,主要的思路有两个:「倍长中线」和构造「中位线」.

    是不是很熟悉?和前面正方形的处理方法是一样的.

    -

    倍长中线

    +

    倍长中线

    图1EE 是腰 CDCD 的中点,连结 AEAE 并延长交 BCBCFF,则有 ADEFCE\triangle ADE \cong \triangle FCE,于是 EE 也是 AFAF 的中点,AD=CFAD = CF

    这个方法相当于是 ADE\triangle ADE 旋转到了 FCE\triangle FCE,于是把原来的梯形变成了一个三角形.

    这个方法同时可以用来证明梯形的中位线定理.

    图1

    -

    梯形的中位线

    +

    梯形的中位线

    图2EE 是腰 CDCD 的中点,取 ADAD 的中点 FF,则 EFEF 是梯形 ABCDABCD 的中位线,于是 EFABCDEF \parallel AB \parallel CD,且 EF=12(AB+CD)EF = \dfrac{1}{2} (AB + CD)

    图2

    -

    直角梯形的「腰中点」

    +

    直角梯形的「腰中点」

    图3,对于直角梯形 ABCDABCDA=D=90\angle A = \angle D = 90^\circ,取腰 BCBC 的中点 EE,则 EA=EDEA = ED,即 AED\triangle AED 是等腰三角形.

    图3

    用上面两种方法,都很容易证明这个命题.

    -

    一种特殊情况

    +

    一种特殊情况

    如果在图3中加入 AEDEAE \perp DE,也就是 AED\triangle AED 是等腰直角三角形的条件,那么 AB+CD=ADAB + CD = AD

    图4

    如果用第1种方法,如图5,则 DEDE 垂直平分 AFAFADF\triangle ADF 是等腰直角三角形,

    @@ -2099,17 +2099,17 @@ M834 80h400000v40h-400000z'/>

    如果考虑四点共圆的话,有 ABEMABEMDCEMDCEMEPMQEPMQ 三组四点共圆,而且这三个圆有公共弦 EMEM

    图9

    -

    图形的来源

    +

    图形的来源

    如果我们仔细观察一下图7,我们就会发现,这个图实际上是「弦图」的一半.

    图10

    如果再考虑 PQPQ,那么这个图就相当于嵌套的两个弦图,于是图8中的结论就显然成立了.

    图11

    -

    变形

    +

    变形

    如果我们只考虑 MBC\triangle MBC,那么就变成了这样一道题:

    图12,在等腰 RtMBC\mathrm{Rt} \triangle MBC 中,EE 是斜边 BCBC 的中点,MP=CQMP = CQ,则 EPQ\triangle EPQ 是等腰直角三角形.

    图12

    利用图8中的 PMEQCE\triangle PME \cong \triangle QCE,这个结论显然是成立的.

    -

    推广一

    +

    推广一

    如果我们保留 MB=MCMB = MC 的条件(即 MEBCME \perp BC),如图13,那么这个时候仍有 AED=BMC\angle AED = \angle BMC 的结论成立.

    图13

    注意到这个时候 ABEMABEMDCEMDCEM 这两组四点共圆依旧成立,于是

    @@ -2137,7 +2137,7 @@ M834 80h400000v40h-400000z'/>

    因此上面 ABNMABNM 四点也共圆.

    剩下的证明和图14是完全一样的,只需要把式子中的 EE 点换成 NN 点就可以.

    -

    推广二

    +

    推广二

    如果我们保留 BMC=AND=90\angle BMC = \angle AND = 90^\circ 的条件,过 BBCCADAD 上一点 MMMDC\triangle MDC 的外接圆交 BCBCNN,作 AND\triangle AND 的外接圆与 BCBC 的另一个交点 PP,则 APBMAP \perp BMDPCMDP \perp CM

    图16

    证明中还用到上面推出的 ABNMABNM 四点共圆的结论:

    @@ -2160,7 +2160,7 @@ M834 80h400000v40h-400000z'/>

    图19

    事实上,对于一般的梯形 ABCDABCDABCDAB \parallel CD,如果过 BBCCADAD 上一点 MMMDC\triangle MDC 的外接圆交 BCBCNN,作 AND\triangle AND 的外接圆与 BCBC 的另一个交点 PP,那么依然有 DPBMDP \parallel BMAPCMAP \parallel CM 的结论成立.证明过程和前面完全相同.

    图20

    -

    变形

    +

    变形

    我们把图20简化一下,就可以得到下面这个题目:

    图21,在梯形 ABCDABCD 中,ABCDAB \parallel CD,任取 ADAD 上一点 MM,作 APCMAP \parallel CMBCBCPP,则 DPBMDP \parallel BM

    图21

    @@ -2190,12 +2190,12 @@ M834 80h400000v40h-400000z'/>
    安装 ArchWSL 后需要做的事 //posts/2020-04-11-Install-ArchWSL/ 最近把 windows 更新到了 2004,切换到了 WSL 2 上。

    -

    安装 WSL 2

    +

    安装 WSL 2

    启用 WSL 和虚拟机控制平台功能(要求管理员权限):

    dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
    dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart
    wsl --set-default-version 2

    之后重启电脑。

    安装 Arch,参见 ArchWSL

    -

    WSL 2 相对于 WSL 1 的优缺点

    +

    WSL 2 相对于 WSL 1 的优缺点

    优点:

    • 本地文件操作更快。之前编译一个 glibc,几个小时都没有编完
    • @@ -2208,56 +2208,56 @@ M834 80h400000v40h-400000z'/>
    • 经常会爆内存,包括安装大软件、长时间运行等
    • 访问 Windows 主机上文件的速度变慢
    -

    语言设置

    +

    语言设置

    /etc/locale.conf 改为 LANG=zh_CN.UTF8

    然后 source /etc/locale.conf

    一个非常奇怪的事情是,如果把 LANG 设为 zh_CN.UTF-8,那么在 bash 下,windows 中的中文文件名显示为乱码,而 zsh 则显示正常。
    但在默认的 LANG=en_US.UTF-8 下,bashzsh 都能正常显示中文文件名。

    -

    安装软件包

    -

    导入密钥(非常重要!!!)

    +

    安装软件包

    +

    导入密钥(非常重要!!!)

    # 初始化密钥环 && 验证主密钥 && 更新密钥
    pacman-key --init && pacman-key --populate archlinux && pacman-key --refresh-keys
    -

    启用国内的镜像源

    +

    启用国内的镜像源

    echo "Server = https://mirrors.aliyun.com/archlinux/\$repo/os/\$arch
    Server = https://mirrors.tuna.tsinghua.edu.cn/archlinux/\$repo/os/\$arch
    Server = https://mirrors.neusoft.edu.cn/archlinux/\$repo/os/\$arch
    Server = https://mirrors.cqu.edu.cn/archlinux/\$repo/os/\$arch
    Server = https://mirrors.sjtug.sjtu.edu.cn/archlinux/\$repo/os/\$arch
    Server = https://mirrors.ustc.edu.cn/archlinux/\$repo/os/\$arch" > /etc/pacman.d/mirrorlist
    -

    添加 ArchlinuxCN 源

    +

    添加 ArchlinuxCN 源

    echo "
    [archlinuxcn]
    Server = https://mirrors.tuna.tsinghua.edu.cn/archlinuxcn/x86_64" >> /etc/pacman.conf
    pacman -Sy && pacman -S archlinuxcn-keyring && pacman -S yaourt

    这里坚持用 yaourt 的原因有两个,一是在 root 环境下使用不报错(主要是需要彩色显示),二是可以显示版本更新还是编译更新。

    -

    安装常用软件

    -

    先搭建好常用环境

    +

    安装常用软件

    +

    先搭建好常用环境

    pacman -Syu
    pacman -S zsh git subversion lua openssh
    -

    安装 zinit(原 zplugin)

    +

    安装 zinit(原 zplugin)

    git clone https://github.com/zdharma/zinit.git ~/.zinit/bin
    echo "source ~/.zinit/bin/zinit.zsh" > ~/.zshrc

    不得不再次吐槽一下 git clone 的速度。。。

    -

    安装 powerlevel10k

    +

    安装 powerlevel10k

    echo "zinit ice depth=1; zinit light romkatv/powerlevel10k" >> ~/.zshrc
    -

    启用 zsh(终于有了一个好看的终端)

    +

    启用 zsh(终于有了一个好看的终端)

    zsh

    然后就可以导入之前的 .zshrc 了。

    -

    切换默认终端至 zsh

    +

    切换默认终端至 zsh

    chsh -s /bin/zsh
    -

    安装 vim-plug

    +

    安装 vim-plug

    curl -fLo ~/.vim/autoload/plug.vim --create-dirs \
    https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim

    导入之前的 .vimrc 文件,并执行命令:

    vim +PlugInstall +qall
    -

    安装常用软件

    +

    安装常用软件

    pacman -S base-devel which diffutils man openssh tree p7zip bc wget \
    htop strace most \
    yarn npm python-pip \
    zathura-ps zathura-pdf-poppler \
    feh imagemagick mediainfo ffmpeg \
    opencc dos2unix jq net-tools bind-tools nload
    yarn global add hexo-cli nali-cli http-server
    -

    安装花哨软件

    +

    安装花哨软件

    pacman -S fd exa bat ripgrep percol
    -

    安装常用字体

    +

    安装常用字体

    pacman -S adobe-source-code-pro-fonts adobe-source-sans-pro-fonts adobe-source-serif-pro-fonts adobe-source-han-sans-cn-fonts adobe-source-han-serif-cn-fonts tex-gyre-fonts ttf-dejavu wqy-zenhei wqy-microhei ttf-sarasa-gothic
    -

    安装专业软件

    +

    安装专业软件

    pacman -S texlive-most
    pacman -S texlive-langchinese biber asymptote qtikz \
    sagemath jupyter

    注意:安装 texlive-fontextra 会爆内存!!!
    反正我的8G内存被爆了,16G没有问题)

    -

    安装 X 软件

    +

    安装 X 软件

    pacman -S tk gvim

    ~/.zshrc 中添加:

    export DISPLAY=$(awk '/nameserver / {print $2; exit}' /etc/resolve.conf 2>/dev/null):0.0
    export LIBGL_ALWAYS_INDIRECT=1

    注意对于 WSL 2,VcXsrv 启动时需要选中 Disable access control 的选项,或者加上 -ac 的参数。

    -

    添加新用户

    +

    添加新用户

    groupadd AAA
    useradd XXX -g AAA -G wheel -m -N
    pacman -S sudo
    echo "wheel ALL=(ALL) NOPASSWD: ALL" > /etc/sudoers.d/wheel

    其实我一直是使用 root 账户,只有在需要 makepkg 的时候才切换到普通用户。

    ]]>
    @@ -2281,11 +2281,11 @@ M834 80h400000v40h-400000z'/>

    安装 windows 还是比较顺利的。这里建议不要用 Media Creation Tool,而是直接下载 iso 文件,这样下载的速度会快一些。(谁叫我有 IDM 呢 →_→)

    安装之后,系统引导会自动生成,不用手动干预。

    然而,主要耗费时间是在安装各种软件上。

    -

    Adobe

    +

    Adobe

    有请 vposy 大神。。。

    -

    Office 下载与激活

    +

    Office 下载与激活

    参见 https://v0v.bid

    -

    MathType 与字体冲突的问题

    +

    MathType 与字体冲突的问题

    MathType 与 Microsoft Store 中的「更纱黑体」相冲突,安装「更纱黑体」会导致 MathType 闪退,原因不明。

    但直接下载字体点击安装的话就没有问题。

    这个问题折腾了我半天的时间。。。

    @@ -2295,7 +2295,7 @@ M834 80h400000v40h-400000z'/>

    又尝试单独安装部分字体,只装了 Sarasa Term,没有问题。那就先这么用吧。。。

    -

    盘符问题

    +

    盘符问题

    在安装的时候,一定将新的系统盘标为 C 盘。如果系统安装完了之后,就没法再修改了。至少我目前还没有找到方法。

    看过网上说的一些方法。如果直接在硬盘管理中修改盘符的话,非系统盘是可以直接修改的,系统盘修改的话会显示参数错误。

    还有直接修改注册表中 HKEY_LOCAL_MACHINE\SYSTEM\MountedDevices 下的驱动器号的,我试了一下,然后电脑就无法启动了。还是通过安装盘恢复原来的设定之后才能启动。

    @@ -2307,7 +2307,7 @@ M834 80h400000v40h-400000z'/>

    其实大部分软件安装都没有问题,只是在「华为电脑管家」的时候出现了问题。
    于是我只能把另外一个分区改为 C 盘,然后安装之后把 Program Files(x86) 中的文件移到 D 盘中,然后在注册表中搜索修改所有相关的项。
    目前使用上还没有发现问题。

    -

    独显问题

    +

    独显问题

    之前电脑上,可以选择以 N 卡运行 chrome。但是这次安装之后,即使是选择 N 卡运行,包括在 Nvidia 控制面板里设置,还是右击选择以「高性能 Nvidia 处理器」运行,都没有作用。

    Firefox 也不管用。

    但是 mpv 和 qutebrwoser 都运行正常。

    @@ -2316,14 +2316,14 @@ M834 80h400000v40h-400000z'/>
    我就是想打个麻将而已,容易么我。。。
    顺带说一下,笔记本是 14 年买的,CPU 是 i7-4700HQ,核显是 HD Graphic 4600,独显是 GeForce GTX 850M。

    -

    播放器选择

    +

    播放器选择

    安装之后试了一下 4k 视频的播放,发现不需要修改就可以直接舒畅播放的就只有 vlc,而且仅仅使用核显,播放的时候 CPU 30%,核显 vlc 使用 5%,整体 20%,不知道是怎么调教的。

    如果配置好的话,让 mpv 用 N 卡解码也是可以流畅播放的,核显 25%,独显 60%。

    -

    对不同应用切换不同的输入法

    +

    对不同应用切换不同的输入法

    设置 -> 设备 -> 输入 -> 高级键盘设置 -> 切换输入法 -> 勾选「允许我为每个应用窗口使用不同的输入法」

    -

    杀毒软件

    +

    杀毒软件

    趁着这次机会,入正了 EAV。

    -

    Git

    +

    Git

    如果直接安装 Git For Windows 的话,就没有什么问题。
    不过由于我安装了 MSYS2,因此就直接在 MSYS2 里面安装了,但这带来了一个奇怪的问题,那就是 git 的 ssh 协议无法使用。具体就是:如我运行

    ssh -T git@github.com
    @@ -2332,7 +2332,7 @@ M834 80h400000v40h-400000z'/>

    但是 git pullgit push 就是运行不成功,显示

    git@github.com: Permission denied (publickey).
    fatal: Could not read from remote repository.

    Please make sure you have the correct access rights
    and the repository exists.

    后来发现,Git For Windows 貌似可以之间使用 Windows 默认的 ssh 配置文件(位置在 %HOMEPATH%\.ssh\),而在 MSYS2 里安装的话需要把密钥复制到 MSYS2 的 ssh 配置文件里。

    -

    WSL

    +

    WSL

    在安装完 WSL 之后,我发现网络访问有问题,而且问题比较奇怪。

    我在 WSL 中,能够正常访问网络;在 Windows 中,也能访问 WSL 中的网络;但是在 WSL 中,无法访问 Windows 应用,包括 VcXsrc。

    @@ -2350,7 +2350,7 @@ M834 80h400000v40h-400000z'/> Windows 常用指令 //posts/2020-05-12-Windows-commands/ - 直接运行 + 直接运行
    • winver: 关于 Windows
    • msinfo32:系统信息
    • @@ -2365,7 +2365,7 @@ M834 80h400000v40h-400000z'/>
    • mspaint:画图
    • notepad:记事本
    -

    管理控制台

    +

    管理控制台

    • services.msc: 服务
    • gpedit.msc: 组策略
    • @@ -2374,7 +2374,7 @@ M834 80h400000v40h-400000z'/>
    • diskmgmt.msc:磁盘管理 Win+X K
    • secpol.msc:本地安全策略
    -

    控制面板

    +

    控制面板

    • hdwwiz.cpl:设备管理器 Win+X M
    • appwiz.cpl: 程序和功能(卸载)
    • @@ -2395,7 +2395,7 @@ M834 80h400000v40h-400000z'/> 常用 FFmpeg 命令 //posts/2020-06-22-FFmpeg-Commands/ - 剪裁文件 + 剪裁文件
      ### 截取前一部分的视频
      ffmpeg -t [duration] -i [input.mp4] -c copy [output.mp4]

      ### 截取后一部分视频
      ffmpeg -ss [start] -i [input.mp4] -c copy [output.mp4]

      ### 截取中间一部分视频(结束时间确定)
      ffmpeg -ss [start] -to [end] -i [input.mp4] -c copy [output.mp4]
      ### 或者(时长确定)
      ffmpeg -ss [start] -t [duration] -i [input.mp4] -c copy [output.mp4]

      时间格式:HH:MM:SS.XXX

      这里面使用 -c copy 的选项,避免重新进行编码,可以很快地进行剪裁。

      @@ -2406,16 +2406,16 @@ M834 80h400000v40h-400000z'/>
      ffmpeg -ss [start] -t [duration] -accurate_seek -i [input.mp4] -avoid_negative_ts 1 -c copy [output.mp4]

      注意 -accurate_seek 选项要在 -i 选项之前。

      如果需要非常精确的剪裁的话,需要重新进行编码,并使用 -strict experimental 或者 -strict 2 的选项。

      -

      合并文件

      +

      合并文件

      先把要合并的文件写在一个文本文件 list.txt 里:

      file './split1.mp4'
      file './split2.mp4'
      file './split3.mp4'

      然后再进行合并:

      ffmpeg -f concat -i [list.txt] -c copy [output.mp4]
      -

      改变格式

      +

      改变格式

      ### 重新编码
      ffmpeg -i [input].mp4 [output].flv

      ### 不重新编码
      ffmpeg -i [input].mp4 -c copy [output].flv
      -

      提取音频

      +

      提取音频

      ffmpeg -i [intput].mp4 -c:a copy [output.aac]
      -

      合并视频和音频

      +

      合并视频和音频

      ffmpeg -i [input.mp4] -i [input.aac] -c copy [output.mp4]
      ]]> @@ -2442,14 +2442,14 @@ M834 80h400000v40h-400000z'/>

      注意:两款软件都在不断更新,并且不断添加新的功能,因此后面所说的可能与您现在所用到的功能并不完全相同。请注意本文的更新日期。

      例如,就在我使用它们上课的这几个月间,Notability 添加了投屏区域和激光笔功能,导致我从完全使用 GoodNotes 转换到目前以使用 Notability 为主。(毕竟从一开始,我就是 Notability 党)

      -

      作为一个投屏教学的笔记软件的必要条件

      +

      作为一个投屏教学的笔记软件的必要条件

      • 支持投屏区域功能,即只投屏指定区域,而不是整个屏幕,保证 iPad 上弹出的消息不会被投上去
      • 支持激光笔功能,并且支持暂时保留激光笔的书写痕迹
      • 支持画直线的功能(几何教学必备)
      • 防误触功能
      -

      两个笔记本软件目前都支持的功能

      +

      两个笔记本软件目前都支持的功能

      • 都支持投屏区域和激光笔功能
      • 都支持连续翻页模式和单页模式
      • @@ -2458,7 +2458,7 @@ M834 80h400000v40h-400000z'/>
      • 都支持分屏功能,而且可以选择投哪一个(不同的是 GoodNotes 是 iPad 的窗口分屏,因此两个窗口使用不同的工具栏,而 Notability 是软件内部的分屏,使用同一个工具栏)
      • 都支持 iCloud 同步
      -

      GoodNotes 的优势

      +

      GoodNotes 的优势

      • 👍多层文件夹管理,可以按照「课件-学期-课程-讲义」的层级结构来组织存放讲义,便于寻找
      • 支持批量管理页面
      • @@ -2472,14 +2472,14 @@ M834 80h400000v40h-400000z'/>
      • 支持标签页功能,方便切换文件
      • 撤销、恢复有两个按钮,使用比较方便
      -

      GoodNotes 的痛点

      +

      GoodNotes 的痛点

      • 👎👎画直线和其它规则图形,需要切换到专门的工具才可以。而且轨迹是画完后自动校正,无法提前预览,因此精确度较难把握
      • 👎👎👎直线画不直,经常自动校正成为折线,特别是在画相对较短的线段的时候。画长线段的时候反而会好一点。(技巧:开启不显示页面缩放的功能,然后把页面放大,再画直线)
      • 👎👎👎当绘制倾斜程度很小或者很大的直线的时候,会被自动校正为水平或者竖直的直线,导致根本无法画出正确的直线
      • 只能复制书写笔记,不能复制原文件的内容,只能通过截图再导入实现,比较麻烦
      -

      Notability 的优势

      +

      Notability 的优势

      • 👍👍👍支持自动拉直和图形检测,即绘制完成之后,继续长按,可以自动转化为直线或者其它图形,并且可以调整和实时预览,还会自动弹出放大镜,方便精确控制绘制点
      • 👍👍👍绘制完成的线段可以自由调整两个端点,且长按会有放大镜
      • @@ -2492,7 +2492,7 @@ M834 80h400000v40h-400000z'/>
      • 调整窗口大小的时候,页面宽度会自动调整
      • 连续滚动时的流畅程度更高(主观感觉)
      -

      Notability 的痛点

      +

      Notability 的痛点

      • 文件管理只支持两个层级
      • 👎👎👎新消息弹出的时候,会阻挡工具栏,如果恰好在选择工具的时候点击到弹出的消息,可能会造成教学事故……
      • @@ -2503,7 +2503,7 @@ M834 80h400000v40h-400000z'/>
      • 不支持批量删除页面
      • 导出时须每次手动取消自动添加的最后一页
      -

      我的经验

      +

      我的经验

      在最开始上课的时候,由于 Notability 还不支持投屏区域功能,因此只能使用 GoodNotes,恰巧这个时候有好几个班都在讲几何,因此体会最深的就是每次画辅助线的时候都要切换工具,画完之后还要切换回来,非常麻烦。而且它的自动校正并不准确,而且在画完之后不支持调整,导致一条线有时需要画好几遍才能画得比较准确。

      因此在暑假开课的时候,我终于可以切换到了 Notability,但是也带了各种不方便,上面列举的所有痛点,都是我在讲课的时候遇到的。这里面影响最大的就是添加同类型页面非常麻烦。因为几何题目的过程较长,一页的板书写不下,所以我得提前复制好新的页面,否则在讲解题目的时候再复制,就会非常影响讲课的节奏。(但我又经常忘了。。。)

      不得不说,习惯了 GoodNotes 添加页面的快捷之后,再回到 Notability,我到现在都没法适应。

      @@ -2514,7 +2514,7 @@ M834 80h400000v40h-400000z'/>

      关于颜色切换部分,我补充一点。如果仅仅使用 3 个颜色就够的话,GoodNotes 的切换方式要快的多;但是,如果使用的颜色更多的话,反而是 Notability 的切换方式更加顺畅。在讲比较复杂的几何题的时候,这点体现得尤为明显。

      因此,仅从书写体验来看,Notability 要比 GoodNotes 强太多,特别是讲几何题的时候。

      而从综合体验上来看,则是 GoodNotes 完胜。

      -

      我的选择

      +

      我的选择

      只要有几何内容,那么一定使用 Notability。

      如果只讲代数内容,那就看当时的心情吧。不过我更喜欢 Notability 里面书写的感觉,因此继续用 Notability 的几率会更大一点吧。

      ]]> @@ -2545,8 +2545,8 @@ M834 80h400000v40h-400000z'/>
      • 命名比较繁琐
      -

      定义点的方法

      -

      定义坐标点

      +

      定义点的方法

      +

      定义坐标点

      @@ -2573,7 +2573,7 @@ M834 80h400000v40h-400000z'/>
      -

      定义相对点

      +

      定义相对点

      @@ -2638,7 +2638,7 @@ M834 80h400000v40h-400000z'/>
      -

      定义几何变换点

      +

      定义几何变换点

      命令:\tkzDefPointBy[<option>](P) \tkzGetPoint{Q}

      批量变换:\tkzDefPointsBy[<option>](M,N,...){P,Q,...}

      (如后面的为{},则缺省值为M',N',...

      @@ -2684,7 +2684,7 @@ M834 80h400000v40h-400000z'/>
      -

      定义向量变换点

      +

      定义向量变换点

      命令:\tkzDefPointWith[<options>](<A,B>) \tkzGetPoint{C}

      @@ -2823,7 +2823,7 @@ M834 80h400000v40h-400000z'/> -40.5-119-75.5s-58.3-74.8-73-119.5c-4.7-14-8.3-27.3-11-40-1.3-6.7-3.2-10.8-5.5 -12.5-2.3-1.7-7.5-2.5-15.5-2.5-14 0-21 3.7-21 11 0 2 2 10.3 6 25 20.7 83.3 67 151.7 139 205zm0 0v40h399900v-40z'/> 的坐标为 (\Vx,\Vy).

      -

      定义三角形的各中心

      +

      定义三角形的各中心

      命令:\tkzDefTriangleCenter[<option>](<A,B,C>) \tkzGetPoint{P}

      @@ -2909,7 +2909,7 @@ M834 80h400000v40h-400000z'/>
      -

      定义随机点

      +

      定义随机点

      命令:\tkzDefRandPointOn[<local option>] \tkzGetPoint{P}

      @@ -2945,11 +2945,11 @@ M834 80h400000v40h-400000z'/>
      -

      获取点的方法

      +

      获取点的方法

      获取一个点:\tkzGetPoint{A},默认存储为 tkzPointResult

      获取多个点:\tkzGetPoints{A}{B},默认存储为 tkzFirstPointResulttkzSecondPointResult

      若只获取其中某一个,则可以使用 tkzGetFirstPoint{A}\tkzGetSecondPoint{B}

      -

      绘制点的方法

      +

      绘制点的方法

      绘制单个点:\tkzDrawPoint[<options>](A)

      绘制多个点:\tkzDrawPoints[<options>](A,B,C,...)

      自定义点的样式:\tkzSetUpPoint[<options>]

      @@ -2979,7 +2979,7 @@ M834 80h400000v40h-400000z'/>
      -

      标记点的方法

      +

      标记点的方法

      标记单个点:\tkzLabelPoint[<options>](A){<text support tex>}

      标记多个点:\tkzLabelPoints[<options>](A,B,C,...)

      自动选择位置标记多个点:\tkzAutoLabelPoints[center=M, <options>](A,B,C,...)

      @@ -3022,8 +3022,8 @@ M834 80h400000v40h-400000z'/>
      常用 tkz-euclide 命令(二)——直线形的定义方法 //posts/2020-07-04-tkz-euclide-2/ 在上一节中,总结了各种定义特殊点的方法,这一节主要讲述如何定义各类直线形——直线,三角形和多边形.

      -

      定义直线形的方法

      -

      定义直线

      +

      定义直线形的方法

      +

      定义直线

      命令:\tkzDefLine[<options>](A,B) or (A,B,C) \tkzGetPoints{P}{Q} or \tkzGetPoint{P}

      @@ -3088,7 +3088,7 @@ M834 80h400000v40h-400000z'/>
      -

      定义切线

      +

      定义切线

      @@ -3107,7 +3107,7 @@ M834 80h400000v40h-400000z'/>
      -

      定义三角形

      +

      定义三角形

      命令:\tkzDefTriangle[<options>](A,B) \tkzGetPoint{C}

      @@ -3151,7 +3151,7 @@ M834 80h400000v40h-400000z'/>
      -

      定义特殊三角形

      +

      定义特殊三角形

      命令:\tkzDefSpcTriangle[<options>](A,B,C),对应的「心」存在 tkzPointResult

      @@ -3209,7 +3209,7 @@ M834 80h400000v40h-400000z'/>
      -

      定义特殊多边形

      +

      定义特殊多边形

      @@ -3232,7 +3232,7 @@ M834 80h400000v40h-400000z'/>
      -

      定义正多边形

      +

      定义正多边形

      命令:\tkzDefRegPolygon[<options>](A,B)

      @@ -3260,8 +3260,8 @@ M834 80h400000v40h-400000z'/>
      -

      绘制直线形的方法

      -

      绘制直线

      +

      绘制直线形的方法

      +

      绘制直线

      绘制一条直线:\tkzDrawLine[<options>](A,B)

      绘制多条直线:\tkzDrawLines[<options>](A,B C,D ...)

      自定义直线的样式:\tkzSetUpLine[<options>]

      @@ -3291,7 +3291,7 @@ M834 80h400000v40h-400000z'/>
      -

      绘制三角形中的特殊线段

      +

      绘制三角形中的特殊线段

      @@ -3314,24 +3314,24 @@ M834 80h400000v40h-400000z'/>
      -

      绘制线段

      +

      绘制线段

      绘制一条线段:\tkzDrawSegment[<options>](A,B)(相当于 \draw (A)--(B)

      绘制多条线段:\tkzDrawSegments[<options>](A,B C,D ...)

      -

      (定义并)绘制三角形

      +

      (定义并)绘制三角形

      命令:\tkzDrawTriangle[<options>](A,B) \tkzGetPoint{C}

      -

      (定义并)绘制正方形

      +

      (定义并)绘制正方形

      命令:\tkzDrawSquare[<options>](A,B) \tkzGetPoints{C}{D}

      -

      (定义并)绘制黄金矩形

      +

      (定义并)绘制黄金矩形

      命令:\tkzDrawGoldRectangle[<options>](A,B) \tkzGetPoints{C}{D}

      -

      绘制多边形

      +

      绘制多边形

      命令:\tkzDrawPolygon[<options>](A,B,C,...)

      -

      绘制多边形链

      +

      绘制多边形链

      命令:\tkzDrawPolySeg[<options>](A,B,C,...)

      -

      填充直线形的方法

      -

      填充多边形

      +

      填充直线形的方法

      +

      填充多边形

      命令:\tkzFillPolygon[<options>](A,B,C,...)

      -

      标记直线形的方法

      -

      标记直线

      +

      标记直线形的方法

      +

      标记直线

      命令:\tkzLabelLine[<options>](A,B){<text support tex>}

      @@ -3355,11 +3355,11 @@ M834 80h400000v40h-400000z'/>
      -

      标记线段

      +

      标记线段

      标记一条线段:\tkzLabelSegment[<options>](A,B)

      标记多条线段:\tkzLabelSegments[<options>](A,B C,D ...)

      选项和直线相同.

      -

      用符号标记线段

      +

      用符号标记线段

      标记一条线段:\tkzMarkSegment[mark=<mark option>, <other options>](A,B)

      标记多条线段:\tkzMarkSegment[mark=<mark option>, <other options>](A,B C,D ...)

      diff --git a/sitemap.xml b/sitemap.xml index 8281f4a52..c1b5a9cd2 100644 --- a/sitemap.xml +++ b/sitemap.xml @@ -4,28 +4,28 @@ https://wangjiezhe.com/categories/index.html - 2020-07-23T05:04:39.633Z + 2020-07-23T07:30:43.188Z https://wangjiezhe.com/links/index.html - 2020-07-23T05:04:39.633Z + 2020-07-23T07:30:43.188Z https://wangjiezhe.com/tags/index.html - 2020-07-23T05:04:39.633Z + 2020-07-23T07:30:43.188Z https://wangjiezhe.com/404.html - 2020-07-23T05:04:39.545Z + 2020-07-23T07:30:43.104Z diff --git a/tags/index.html b/tags/index.html index 33581aa4b..f6f92c0d4 100644 --- a/tags/index.html +++ b/tags/index.html @@ -33,7 +33,7 @@ - +