分类 技术随笔 下的文章

pcDuino 使用支持RDP协议的 xrdp 进行远程桌面

作为贫农,玩pcDuino没有HDMI输出,就只能靠vnc等软件查看pcDuino的屏幕了,但是vnc的速度实在令人不敢恭维,因此尝试换支持RDP协议的xrdp,pcDuino默认是用的lxde而不是gnome,这点一定要注意

先下一个xrdp

sudo apt-get install xrdp

如果你运气爆棚,现在就可以使用xrdp了,只需要用微软自带的mstsc连接即可,但事情总不会那么顺利的
多半会遇到这样的错误:

error-problem connecting

而在/var/log/xrdp-sesman.log 里的日志是这样的:

[20150518-16:59:47] [ERROR] X server for display 10 startup timeout
[20150518-16:59:47] [INFO ] starting xrdp-sessvc - xpid=1433 - wmpid=1432
[20150518-16:59:47] [ERROR] X server for display 10 startup timeout
[20150518-16:59:47] [ERROR] another Xserver is already active on display 10
[20150518-16:59:47] [DEBUG] aborting connection...
[20150518-16:59:47] [INFO ] session 1431 - user ubuntu - terminated

MySQL数据库启动错误 Manager of pid-file quit without updating file

好久没看博客,去google analytics看怎么流量锐减,从3月18号之后就没有流量了,发现是网站们都down了,数据库连不上。
后台数据库没有起来,试着起一下,报了错误:Manager of pid-file quit without updating file
查找数据库启动日志,我用的lnmp所以在/usr/local/mysql/var里,发现

150331 00:13:26 mysqld_safe Starting mysqld daemon with databases from /usr/local/mysql/var/usr/local/mysql/libexec/mysqld: File './mysql-bin.index' not found (Errcode: 13)
150331  0:13:26 [ERROR] Aborting

150331  0:13:26 [Note] /usr/local/mysql/libexec/mysqld: Shutdown complete

150331 00:13:26 mysqld_safe mysqld from pid file /usr/local/mysql/var/svr.pid ended

重要的一句:File './mysql-bin.index' not found (Errcode: 13)
查看mysql-bin.index 文件是存在的,所以应该是权限问题。
将var下的所有文件chown到mysql用户下,问题解决

chown -R mysql:mysql var/

如何优雅的使用60%键盘,将Bash改成Vi模式

最近换了一把 iKBC Poker2 红轴机械键盘,专门在公司用,声音小,键程短,打字快。这是一款PBT键帽的小尺寸键盘,没有数字区,甚至没有方向键,只有普通104键盘60%的尺寸,因此这种也叫做60%键盘,大名鼎鼎的HHKB也是类似尺寸。iKBC Poker2的靓图

因为经常用linux、unix上下翻找命令,没有方向键虽然可以通过组合按键来实现,但是总归麻烦了一点,在shell下用vi模式来的应该舒服的多。

Nodejs Express 使用busboy上传文件

Express 的集成度越来越小,一些附加功能都是通过中间件实现的,上传功能需要处理form-data,试用了一下busboy(在Express中使用connect-busboy),还是十分不错的。

busboy 原地址:https://github.com/mscdex/busboy

connect-busboy 地址:

connect-busboy中给出的例子十分简单,或者说十分简陋,具体功能还需要在busboy原地址中学习。

首先需要在app.js中require一下,并设置相关参数

var busboy =require('connect-busboy');

app.use(busboy({ immediate: true }));

其中immediate选项表示立即从request流读取并解析数据

然后在routes里开写吧!

var uuid = require('node-uuid')

if (req.busboy) {
    req.busboy.on('file', function(fieldname, file, filename, encoding, mimetype) {
		console.log(fieldname);
		console.log(filename);
		console.log(file);
		console.log(mimetype);
		if(mimetype.substr(0,5)=="image"){//我这里是上传了图片
			var id = uuid.v1();
			console.log(id);
			tmpUploadPath = path.join(conf.__uploads, id+'.jpg');
			file.pipe(fs.createWriteStream(tmpUploadPath));
			msg = {errorno:0,uuid:id,msg:"success"}
		}
    });
    req.busboy.on('field', function(key, value, keyTruncated, valueTruncated) {//处理其他非文件字段
		console.log(key);
		console.log(value);
    });
    req.busboy.on('finish', function() {//处理完毕后的回调
        res.json(msg)
    });
}

可以看到 busboy在处理form-data还是非常方便的,值得选用,如果进一步进行裁剪、缩放的功能,再结合gm之类的中间件处理应该更好