H.y's Blog
Ubuntu下配置远程桌面xrdp
想通过windows的远程桌面访问ubunt的桌面,尝试VNC不成功,于是百度出利用xrdp也可以实现。
1.安装
sudo apt-get install xrdp
2.配置
配置文件在/etc/xrdp/xrdp.ini中,我没有进行特别的修改。
3.安装gnome桌面环境
只安装xrdp后就进行连接(端口号3389)时,只会显示一个桌面背景。。。能做的操作就是新建文件夹。。。
百度之后说是因为ubuntu13.04的桌面环境不支持,所以需要换成gnome。
sudo apt-get install gnome-session-fallback
echo "gnome-session --session=gnome-fallback" > ~/.xsession
4.重启xrdp
sudo service xrdp restart
The end!!
more…利用Jenkins+Gitlab搭建持续集成(CI)环境
这次实习的任务之一就是搭建一个持续集成(Continuous Integration)环境。
我们选择Jenkins作为持续集成工具,其优点是提供web GUI配置界面,方便配置,还可以安装很多第三方插件(plugin)进行定制与扩展,功能强大。
其次选择Gitlab作为git server。Gitlab的功能和Github差不多,但是是开源的,可以用来搭建私有git server,也提供非常强大的web GUI,比如开发者互相review源代码的时候就会很方便。
本文首先介绍整个系统的结构,然后再一一叙述各个组件的安装及使用方法。
1.系统概览
系统结构如下图所示:
系统的工作流程大概分为以下几步:
1> 开发者将新版本push到git server (Gitlab)。
2> Gitlab随后触发jenkins master结点进行一次build。(通过web hook或者定时检测)
3> jenkins master结点将这个build任务分配给若干个注册的slave结点中的一个,这个slave结点根据一个事先设置好的脚本进行build。这个脚本可以做的事情很多,比如编译,测试,生成测试报告等等。这些原本需要手动完成的任务都可以交给jenkins来做。
4> 我们在build中要进行编译,这里使用了分布式编译器distcc来加快编译速度。
notes
jenkins的工作原理是先将源代码从gitlab中拷贝一份到本地 ...
more…将Raspberry Pi作为BT下载机
今天尝试了一个有用的功能,就是将树莓派作为bt下载机。
由于树莓派耗电低,没噪音,可以让它一直开着下载bt资源。
一个名为 ` Transmission <http://www.transmissionbt.com/>`_ 的软件为我们提供了这个功能。它不但能作为树莓派上的bt客户端,还可以通过web图形界面进行控制,非常方便。
1.安装Transmission
sudo apt-get install transmission-daemon
2.配置Transmission
Transmission的配置是通过编辑其配置文件实现的,
sudo vim /etc/transmission-daemon/settings.json
可配置的选项有很多,这里挑几个常用的讲一下。
1> "download-dir" : "/home/pi/bt" 设置下载后的资源保存的路径。
2> "rpc-authentication-required" : true 远程控制时需要验证
3> "rpc-enabled" : true 开启远程控制
4> "rpc-password" & "rpc-username ...
more…Raspberry Pi中samba服务器的配置
为了可以在笔记本上访问树莓派的文件系统,我们可以在树莓派上安装samba服务器。
因为Raspbian是从Debian改来的,所以参考Debian下samba服务器的配置。
1.安装samba
sudo apt-get install samba samba-common-bin
2.配置samba
首先需要为samba创建一个用户:
sudo touch /etc/samba/smbpasswd
sudp smbpasswd -a pi
然后我们需要编辑samba的配置文件(这里用到了vim,没有安装的话也可以用别的编辑器)
sudo vim /etc/samba/smb.conf
然后在配置文件最后加入以下内容:
[home]
comment = laowang's data
path = /home
valid users = pi
public = no
writable = yes
printable = no
create ...
Raspberry Pi配置USB无线网卡连接wifi
树莓派自身不带无线网卡,所以要想让树莓派连上无线网络,就需要插上一个USB无线网卡。
首先可以在树莓派的 外设兼容列表 中选择一款兼容的USB无线网卡,最好是那种即插即用的(out of the box),这样就不需要安装驱动了。 在日本只能买到 Buffalo WLI-UC-GNM,本以为需要手动安装驱动,没想到直接被系统识别了。
我们可以使用命令
ifconfig -a
来查看接口信息。如果有wlan0这项,就说明新加的网卡已经被识别了。但是IP地址之类的信息还没有。
接下来我们需要配置接口,即编辑配置文件。
sudo nano /etc/network/interfaces
将interfaces中的配置改为:
auto lo
iface lo inet loopback
iface eth0 inet dhcp
auto wlan0
allow-hotplug wlan0
iface wlan0 inet dhcp ...
Raspberry Pi系统安装及启动
最近有些无聊,心血来潮买了一个Raspberry Pi(树莓派)。Raspberry Pi是一款基于Linux系统的个人电脑,配备一枚700MHz的ARM处理器, 512M内存,支持SD卡和Ethernet,拥有两个USB接口,以及 HDMI和RCA输出支持。
首先秀一张开箱图:
1.安装raspbian系统到SD卡
树莓派用SD卡充当硬盘,为了速度,我专门买了一张16G class10的SD卡。
树莓派支持多个系统,官方建议的是Raspbian,这是一个从Debian改过来的系统。首先需要在官网下载系统镜像 Dowload Raspbian 。
然后我们需要一个工具 Win32 Disk Imager 将系统写入SD卡中。
下载并解压,然后运行win32diskimager。工具的界面很简单,我们只需要在"Image File"中选择系统镜像的位置(注意镜像的路径中不能有中文), 在"Device"下选择SD卡的盘符,然后点击"write"按钮。
接下来就是等待至工具提示"Write Successful"后,即可将SD卡安全移除。
我们会发现SD卡的空间变成74MB了 ...
more…windows下安装pelican
用虚拟机在ubuntu下写了这么久的博客,实在是受不了电脑内存不够,一开虚拟机就开始卡的情况。
原来一直懒得搞,因为在linux下安装程序很方便。今天尝试了一下在windows下安装pelican,其实也不是很烦。
1.安装python
pelican是用python开发的,所以首先要在windows下安装python。
在python官网上下载python安装包: Download Python 。我是win8-64bit,所以选择Python3.3.2Windows X86-64 MSI Installer。安装的过程是全自动的,只需要选择路径和点下一步即可。
安装的过程中会询问是否将python添加到环境变量中,为了可以直接在cmd(命令提示符)中使用python命令,建议选是。如果不小心选错了,也可以手动 将python添加到环境变量中去。在path中加入
C:\Python33\Scripts;
即可(此处路径为示例,有可能不一样)。
可以在cmd中输入python查看是否安装成功。(ctrl+c退出)
2.安装pip
pip是一个帮助我们安装和管理python包的工具,我们通过pip来安装pelican。
首先在 Download pip 下载pip。
然后解压下载的压缩包 ...
more…算法导论第10-14章习题答案
10.1-6
Q:说明如何用两个栈来实现一个队列,并分析有关队列操作的运行时间。
A:栈是先进后出,而队列是先进先出,一种自然的想法是,用一个栈来存储队列的元素,入队就和如栈一样; 出队的时候先将这个栈的元素依次压出另一个栈内,然后将栈顶元素(即队首)弹出,然后再依次倒回原先的栈内。 这样入队为O(1),出队为O(n)。仔细想想,并不需要每次都将当前所有元素在两个栈内倒来倒去, 只需要入队用一个栈,出队用另一个栈: 入队操作即在第一个栈上执行入栈;出队操作时,若第二个栈不为空,则在第二个栈上执行出栈, 若第二个栈为空,则将第一个栈内的元素依次全部压入第二个栈内。这样入队出队操作都为O(1)的复杂度。
10.1-7
Q:说明如何用两个队列来实现一个栈,并分析有关栈操作的运行时间。
A:一种自然的想法,类似于上一题,用一个队存储,另一个队列作为临时空间。入栈时就向第一个队列中插入元素; 出栈时,先将第一个队列中除队尾(栈顶)的元素依次出队后进入第二个队列,然后将队尾(栈顶 ...
more…算法导论第15章习题答案
15.2-2
Q:请给出一个递归算法MATRIX-CHAIN-MULTIPLY(A,s,i,j),使之在给出矩阵序列<A1,A2,...,An>,和由MATRIX-CHAIN-ORDER计算出的表s, 以及下标i和j后,能得出一个最有的矩阵链乘法。(初始调用为MATRIX-CHAIN-MULTIPLY(A,s,1,n))。
A:模仿PRINT-OPTIMAL-PARENS(s,i,j)即可。伪代码:
MATRIX-CHAIN-MULTIPLY(A,s,i,j)
{
if i=j then return Ai;
else
return MATRIX-CHAIN-MULTIPLY(A,s,i,s[i ...
算法导论第6,7,8,9章习题答案
6.5-6
Q:说明如何使用优先级队列来实现一个先进先出队列,另说明如何用优先级队列来实现栈。
A:队列的性质是先进先出,所以维护一个最小优先级队列,给先进队的元素赋一个小的优先级,每插入一个新的元素优先级加1。 出队时取优先级最小的元素并维护优先级队列即可。栈的实现同理。
6.5-7
Q:HEAP-DELETE(A,i)操作将结点i中的项从堆A中删去。对含n个元素的最大堆,请给出时间为O(lgn)的HEAP-DELETE的实现。
A:类似于堆排序时做的操作,将要删除的结点和堆的最后一个结点交换,将其删除后维护堆的性质。伪代码:
HEAP-DELETE(A,i)
{
A[i] = A[heap-size[A]];
heap-size[A] = heap-size[A] - 1;
key = A[i];
if key ...