Technic

使用Sphinx生成python代码文档

(English version here)   今天开始使用Sphinx生成python文档。我以前用Doxygen给C代码生成文档,所以这次特意花了点时间比较Sphinx和Doxygen。读了这篇文章之后我决定使用Sphinx Comparison of Python documentation generators。 Sphinx是生成python文档最受欢迎的工具,甚至Python 3 的官方文档也是用Sphinx生成的。在本文中我将和你分享怎么使用Sphinx。 安装 你可以在这里找到sphinx在不同平台的安装方法,我只简单介绍几个比较常用的:   Debian/Ubuntu Python2 $ apt-get install python-sphinx Python3 $ apt-get install python3-sphinx   用pip安装 可以用于Linux, MacOS以及windows pip install -U sphinx   用Git安装 可以用于Linux, MacOS以及windows $ git clone https://github.com/sphinx-doc/sphinx $ cd sphinx $ pip install .   设置和使用 启动sphinx 安装好Sphinx以后你可以在你的代码所在文件夹启动命令窗口并用以下命令启动sphinx: sphinx-quickstart 比如,这里我在名叫Python的文件夹里使用该命令。文件夹中有一个python的测试代码文件。   设置 […]

Continue Reading

Technic

Windows与虚拟机VirtualBox中的Ubuntu共享文件和文件夹

最近因为实验需要,重新启用了好久不用的Virtual Machine,做好基本的设置之后觉得有必要实现windows系统与VirtualBox中的Ubuntu系统的文件共享。尝试了网上说的很多方法都一直报错,最后终于在合并了几个方法的不同步骤之后实现了,现在总结和分享一下。   Windows端 Windows端需要建立一个用来进行文件分享的文件夹,比如我在D盘建了一个ShareWithVM文件夹。在这个文件夹的图标上用鼠标右键单击,然后选择属性–>分享,然后选择“高级分享(Advanced Sharing)”并勾选“分享这个文件夹”,然后单击“确定”即可。   Linux端 设置的重点在linux端,也就是虚拟机上的Ubuntu上,网上有很多教程,可是我使用后并不成功,以下是我的设置过程。 设置VirtualBox中虚拟系统的共享信息 在VirtualBox Manager界面中选择需要设置的Ubuntu虚拟系统,然后按下图的顺序添加刚才在Windows端建立的共享文件夹的信息。这一步可能需要先关闭虚拟机再设置,我不太记得我设置的时候虚拟机是关闭还是运行状态了。   在Terminal中下载所需镜像并安装 这一步可以用参考链接[1]中的方式在windows系统下载然后再虚拟机选择相应镜像,不过我是通过以下的代码实现的。 首先运行Ubuntu并打开一个terminal,然后输入以下代码: sudo apt-get install virtualbox-guest-additions-iso 接下来在图形界面里的以下位置找到这个映像,并用鼠标右键单击,选择Open With Disk Image Mounter,它就会自动安装了,直到安装成功后按enter键退出。 /usr/share/virtualbox/VBoxGuestAdditions.iso   挂载共享文件夹 (2018.06.28补充:以下命令使用了sudo调用了root权限。由于Ubuntu图形界面的时候默认是没有root权限的,在使用图形界面浏览时候可能是出现没有权限浏览共享文件夹的情况。因此我建议做这步的时候不要使用sudo,即:直接mount XXXX。然后你可以进入到共享文件夹中,即下文的/mnt/shared中,在Ubuntu最上方选择“书签-添加书签”,就可以将此文件夹固定到侧边栏便于浏览了。顺便补充一下,如果想给Ubuntu的图形界面赋予root权限,可以使用命令sudo nautilus) 在Ubuntu的Terminal里输入如下命令: sudo mkdir /mnt/shared sudo mount -t vboxsf shareFolder /mnt/shared 或者不加sudo mount -t vboxsf shareFolder /mnt/shared shareFolder是windows中要共享的文件夹的名字,由于我第一步在windows创建的分享文件夹角ShareWithVM,所以我在我这输入的代码实际为: sudo mount -t vboxsf ShareWithVM /mnt/shared 或者不加sudo […]

Continue Reading

Life

写给女孩的安全建议

        编者按:很多年来就在构思这样一篇文章,当时主要是想给我女朋友(现在是我老婆)看。虽然都说男女平等,不过不可否认女性在很多侵害中都是“更好”的目标,也更容易被不法分子盯上,所以专门写了这篇给女孩的安全建议,希望女性朋友们能够读一读,保护好自己;男性朋友们也请读一读,提醒和保护好你的(尤其是有些马大哈的)女性朋友。         以下信息有些是我自己想到的,有些是直接从网上不同文章复制的。相应的参考文章我也都附在文章最后了,如果有任何涉及版权的问题请随时和我联系。之后我也会不断完善这篇文章。 真实的案例 2013年1月 洛杉矶 蓝可儿在酒店溺亡 2013年7月24日 黑龙江 桦南孕妇猎艳杀人案                                       女孩最后微信内容曝光:送一个孕妇阿姨 到她家了 2014年7月17日 巴黎 中国女孩刘瑾妮在酒店差点被强行拉走 2016年4月3日 北京 如家和颐袭击事件 2016年4月11日 德国 李洋洁遇害案 2016年10月3日 巴黎 卡戴珊在酒店被抢劫 2016年11月3日 东京都 江歌被陈世峰在寓所门前用刀刺死 2017年6月9日 美国 章莹颖被绑架,至今下落不明 交友 朋友的定义可能每个人心里都不一样,但是为了安全起见,我建议你保守一些,并不是见过一面的人就叫朋友。 不要以为什么人都很可怜、都可信,时刻保持警惕。 对于刚认识的朋友不要过多的透露自己和家庭的信息。 […]

Continue Reading

Technic

PEP 8 — Style Guide for Python Code (PEP8 — Python代码风格指南)

前言 本篇文章是对Python官网上的代码风格指南的翻译和注解。虽然网上已经有很多类似的翻译了,我还是希望通过自己进行翻译的方式加深对指南的理解。本文更多注重于内容的翻译,所以没有特别多的辞藻修饰,文中若有疏漏和不妥之处,欢迎大家批评指正。本文没有完全翻译结束,近期会慢慢完善。 PEP: 8 Title: Style Guide for Python Code Author: Guido van Rossum <guido at python.org>, Barry Warsaw <barry at python.org>, Nick Coghlan <ncoghlan at gmail.com> Status: Active Type: Process Created: 05-Jul-2001 Post-History: 05-Jul-2001, 01-Aug-2013   Introduction 介绍 This document gives coding conventions for the Python code comprising the standard library in the main Python […]

Continue Reading

Technic

Windows电脑连接linux服务器跑python程序不显示图形的解决(使用Xming和putty)

我在使用windows系统的电脑通过pycharm在实验室的linux服务器上运行python程序的时候,无法正常显示图形,程序卡在plt.show()语句处;而在windows电脑本地运行程序没有问题。通过询问M同事得知使用windows系统连接linux服务器作图的话,需要使用Xming程序,并保证其一直在后台运行。这篇文章就介绍一下怎么设置Xming和putty从而实现可以正常显示图像。   Step 1: 下载Xming和putty 可以从这里下载Xming并按着提示进行安装。putty大家应该都有了,没有的话在这里下载并安装。网上有人建议Xming的安装地址中不要有空格和中文,可以参考一下尽量避免。   Step 2: 设置putty 运行putty之后首先在界面里输入服务器的ip,可以使用save功能对这个session进行保存,这样下次就可以用load直接调用了(例如我存为了titan)。然后非常重要的是要转到Connection->SSH->X11标签下进行设置,勾选Enable X11 forwarding并输入X display的location,例如 localhost:10.0 (注意:这里之后可能需要更改)     Step 3: 通过putty登陆服务器并进行测试 接下来通过putty登陆服务器,这里需要输入你在服务器的用户名和密码。成功登陆后运行xclock语句,由于我们还没有设置Xming服务器,这里会出现错误提示,例如 PuTTY X11 proxy: unable to connect to forwarded X server: Network error: Coion refused Error: Can’t open display: localhost:11.0  注意最后的localhost为11.0,因此我们退出putty并把上一步X11标签下的X display location改为localhost:11.0   Step 4: 运行XLaunch 注意是运行XLaunch不是Xming,因为我们需要进行一些设置。运行XLaunch之后在Display number里输入上一步最后提示的localhost的数字,比如这里为11,之后一路下一步就好。   Step 5: 再次使用xclock进行检查 重复Step 3使用xclock命令进行检查,设置正确的情况下会显示如下图的时钟。   Step 6: 在pycharm中对项目进行设置 在项目对应的环境变量中增加下图中红框里所示的变量,即Name为DISPLAY,Value为localhost:11.0。如此设置好之后,运行python文件即可正确显示图形结果了。   备注 使用过程中需要保证putty和Xming一直是运行状态 […]

Continue Reading

Technic

使用Numpy时遇到的那些坑

Numpy.delete只删除元素的数值 Numpy.delete只是把元素的数值删掉,并不会数组中的这个元素。也就是说,使用Numpy.delete的话,数组的长度是不变的。 如果想完全删除这个元素以及它所在位置,可以使用如下如下语句: X_train = X_train[1:len(X_train),:] ,其中X_train为你想对其进行操作的变量,本例中删除了原X_train 的第一个元素(即index为0的那个元素)。这里如果使用Numpy.delete误以为整个元素被删除了而且没有对其赋予新的值,原来元素所在的位置可能会由一个随机生成的数字代替,在后续的操作中会遇到一些莫名奇妙的数据问题。

Continue Reading

Technic

Linux下使用tmux进行分屏操作

之前看到S同事用同一个命令窗口对实验室server的GPU和进程进行监控,觉得很有意思,而且可以很高效的利用窗口。问了一下是用的tmux,于是今天实践了一下,非常有意思。同时在这里也感谢一下S同事跟我分享这些知识和相关的链接。   tmux的安装这里就不赘述了,下面我们直接来看下tmux的三个模块,即会话、窗口和面板: session 会话:一个服务器可以包含多个会话 window 窗口:一个会话可以包含多个窗口 pane 面板:一个窗口可以包含多个面板   使用tmux我们可以在同一个命令窗口中进行分栏(即不同的面板),比如上下分,左右分,并且可以分成好多不同的小区域进行不同的功能。例如这里我希望把一个命令窗分成上下两部分,上半部分监控GPU,下半部分监控系统的进程。   首先我们需要新建一个tmux session,可以使用命令tmux new-session -s work,最后的work为这个session的名字,建好之后只要不删除这个seesion,那么下次重新打开命令窗的时候,再次输入这个命令还会显示和上次一样的窗口设置,接下来我们就可以在这个session里使用tmux的功能了。   使用tmux的方式是先按快捷键组合,然后按功能键。比如默认的快捷键组合为ctrl+b,那么在同时按下ctrl和b之后,我们可以再按一个对应的功能键来实现希望的功能。具体就从分屏这个简单的例子说吧,如果我们想在窗口中进行上下分屏,我们就先同时按下快捷键组合ctrl和b,然后松开这两个按键,接下来我们按下双引号键”。这样屏幕就像下图一样被分成了上下两个部分。   现在屏幕被分成了两个部分,我们在这两个部分中分别写代码。需要提示的是,如果我们想从一个pane切换到另一个pane,可以使用ctrl+b然后按下方向键。现在大家看到上图中间的横线右半边是绿色,说明下半个pane是处于激活状态。同理,如果是上半个pane为激活状态,则左半边横线为绿色。   接下来我们使用Linux上的一点小技巧中介绍的方法,对GPU和进程进行监控。我们在上边的pane输入watch -n1 –color gpustat,在下边的pane输入htop,这样我们就得到了下图的结果:   目前我们虽然实现了对GPU和进程同时监控,不过窗口布局不是很好看,我希望把上半个pane缩小一点,下半个pane增大一点,这样可以更好的利用整个窗口。网上说的是可以使用ctrl+b后按着ctrl不放,并按方向键,不过我这里实验了发现不成功,依然成了切换pane。我用的是先按ctrl+b,然后使用alt+上/下键进行pane大小的调整。   理论上讲使用ctrl/alt加方向键是两种不同的调整方法: Ctrl+方向键 :以1个单元格为单位移动边缘以调整当前面板大小 Alt+方向键 :以5个单元格为单位移动边缘以调整当前面板大小 可是我这里只有第二种方法,即用alt+方向键的方法可以使用。   除了分屏的功能外,还可以使用tmux命令将两个命令窗的内容同步,也就是关联两个命令窗。更多关于tmux使用和功能的介绍可以参考以下两篇文章: Linux终端分屏工具tmux快捷键备忘 tmux cheat sheet   最后再附上一个所有功能键的示意图: 图片来源(LINK)

Continue Reading