Category: Python

使用 Screen 指令操控 UNIX/Linux 終端機的教學與範例

這裡介紹如何使用 screen 指令來操控 UNIX/Linux 的終端機,讓工作更有效率。 screen 指令是一般 UNIX/Linux 使用者或管理者常會使用的終端機管理程式,它可以讓一個終端機當成好幾個來使用,對於以 SSH 連線到伺服器上工作的人會很有用。 通常一個終端機(terminal 或 console)只能開啓一個互動式(interactive)的 shell 來使用,而藉著 screen 的幫助,使用者可以在一個終端機下,同時開啓多個互動式的 shell,除了自己使用之外,還可以讓 session 分享給不同的使用者,或是讓執行中的 session 暫時卸離(detach),隨後再重新連接(attach)即可繼續操作。 安裝 screen 某些 Linux 發行版可能本身就已經內建 screen 這個指令了,但如果你所使用的 Linux 系統沒有安裝,通常也都可以透過套件管理程式直接安裝編譯好的版本,因為 screen 是一個很常用的指令之一,通常安裝起來不需要花費太多的力氣。 在 Debian 或 Ubuntu Linux 中若要安裝 screen 可以使用 apt-get 來安裝: sudo apt-get install screen 而 Red Hat 系列的 Linux(如 Fedora 等)則可使用…

Continue reading 使用 Screen 指令操控 UNIX/Linux 終端機的教學與範例

数学美 之 判断线段相交的最简方法

如何判断两条直线是否相交? 这很容易。平面直线,无非就是两种关系:相交 或 平行。因此,只需判断它们是否平行即可。而直线平行,等价于它们的斜率相等,只需分别计算出它们的斜率,即可做出判断。 但倘若我把“直线”换成“线段”呢——如何判断两条线段是否相交? 这就有些难度了。和 直线 不同,线段 是有固定长度的,即使它们所属的两条直线相交,这两条线段也不一定相交。 也许你会说:分情况讨论不就行了嘛: 先计算两条线段的斜率,判断是否平行。若平行,则一定不相交。 若不平行,求出两条线段的直线方程,联立之,解出交点坐标。 运用定比分点公式,判断交点是否在两条线段上。 的确,从理论上这是一个可行的办法,这也是人们手动计算时普遍采用的方法。 然而,这个方法并不怎么适用于计算机。原因如下: 计算中出现了除法(斜率计算、定比分点),因此每次计算前都要判断除数是否为 0(或接近 0)。这很麻烦,严重干扰逻辑的表达。 浮点精度丢失带来的误差。人类计算时可以采用分数,但计算机不行。计算机在储存浮点数时会有精度丢失的现象。一旦算法的计算量大起来,误差会被急剧放大,影响结果准确性。 效率低下。浮点乘除会十分耗时,不适用于对实时性要求较高的生产环境(如 游戏)。 那么,有更好的方法? 当然有。 类型预定义 本文的算法将用 python 描述,主要用到两个数据类型: 1 2 3 4 5 6 7 8 9 10 11 12 13 # 点 class Point(object): def __init__(self, x, y): self.x, self.y = x, y # 向量…

Continue reading 数学美 之 判断线段相交的最简方法