首页 » 编程

wsterm – 通过websocket执行linux命令

这两天写了一个小工具wsterm,通过websocket执行命令,挺满意,这样可以通过websocket实现各种web端的自动化管理。
写的过程中间主要有两个问题,一是进程杀不干净,父进程强行终止后,子进程不被杀或者sudo的子进程也不能直接kill,想到expect的实现很强,一直杀得很干净,猜测用的是pty,随用expect进行进程管理。
但用了expect后出现了另一个问题,所有的输出都是stdout,于是套了一层重定向所有输出到FIFO,这样直要从FIFO中读输出就可以区分stdout与stderr...

rust学习 1、Hello World

rustup镜像
修改 $HOME/.bashrc 添加
export PATH=/$HOME/.cargo/bin:$PATH
export RUSTUP_DIST_SERVER=https://mirrors.ustc.edu.cn/rust-static # 用于更新toolchain
export RUSTUP_UPDATE_ROOT=https://mirrors.ustc.edu.cn/rust-static/rustup # 用于更新rustup
安装...

使用Go语言代替node.js实践

  使用Go语言到生产环境已有半年,其优秀的性能,内存管理及便利的Goroutine让人爱不释手。Go在语法上比较保守严谨,因此代码的正确性有很大的提升,但也使得其代码量上远远多于nodejs+CoffeeScript组合。
  之所以使用Go语言,直接原因是node.js在一个日1亿多次ajax请求同时1万websocket长连接的HTTPS服务端在内存上有类似泄漏的表现。debug发现是在启用SSL后,废弃数组中大量faye-websocket对象积压,究其原因,可能是使用不当,也可能是应用设计上的缺陷...

ToffeeScript 1.6.2 发布

ToffeeScript
支持异步语法的CoffeeScript
特性
异步语法
条件语句: If, Switch
循环语句: For In, For Of, While with guard when
数值运算
逻辑运算:
自动回调
正则运算 =~ 与匹配项 \~, \&, \0~\9
支持 Sourcemap
当前基于 CoffeeScript 1.6.2
安装
npm install toffee-script
代码例子
左: ToffeeScript
右:...

支持Socks5协议的高速加密通信的代理服务器脚本

支持SOCKS 5协议的高速加密通信的代理服务器脚本
代码地址:
https://github.com/jiangmiao/proxy
解决现有代理的问题:
1、vpn – vpn接管所有的数据,而在很多时更希望只通过代理访问部份网站。
2、http/socks – 仅使用http或socks代理,没有经过加密的关键词还是有被拦截的可能。
3、ssh+socks – ssh tunnel的socks性能与稳定性不佳。...

node.js成也异步,败也异步,评node.js的异步特性

node.js最大的卖点就是异步,声称以此获得更高的性能,而我认为,node之所以快并不是因为异步而快,而是因为V8而快。异步仅在资源占有明显优势,而引入异步却大大增加了编程的复杂度,且异步在http服务上并没有或者无法用在刀刃上。
以目前node来看,其作为单独http服务器的实现远远不如nginx,若以node建站,更普遍的选择是nginx 反向代理 node,一则由于node作为http服务器功能简单,实现更是差nginx几个台阶,其次因node单线程特性,若要发挥多核的优势,也必然会开2个以上的no...

node.js异步数据库连接,事务查询思考

首先思考一下场景
1、同时有50个并发请求,
2、每个请求将连接PgSQL并执行一个事务: 调用2个不同的Model Bill与Profile,执行 Bill.insert 与 Profile.update
3、PgSQL最大连接数为20
因为使用到事务,所以同一个数据库连接不可能同用于两个不同的http请求
如果在PHP中,那么开20个不同的php-cgi,并对每个php-cgi进行操作,其余30个在请求nginx队列
1、nginx接受50个http请求
2、php-cgi接受20个请求,并建立20个全...

ToffeeScript – 支持异步语法的CoffeeScript

ToffeeScript是CoffeeScript衍生,在完全兼容CoffeeScript的语法下提供了一些新的特性。
一、 特性一览
异步语法支持
Ruby Symbol语法的字串
正则运算符 =~
正则Magic标识符 \& \~ \1..9
1. 异步语法支持
语法: 在调用的函数尾加上!(感叹号)
输入:
do ->
# ! always is a function
foo_0_0!
@va = obj.foo_2_1!...

Dart试用手记 – 2、语法与评论

Dart的语法比较传统,可以看到Java,C++的影子
1. 注释
// 单行注释
/* … */ 注释块
2. 变量
Dart有2种变量var与final
final必需要初使化且只能赋值一次
3. 函数
Dart的函数格式:[返回类型] [函数名] 参数列表 函数体
参数列表与函数体是必需的其余可省略
而 Dart的函数体有2种形式
=> 单一表达式
{ 各种表达式 }
由此以函数都是合法的
(a, b) => a + b;
() => 'yes&#...

Dart试用手记 – 1、编译与安装

今天Google发布了Dart,定位用以替代JavaScript,从架势来看未来应该也会有所投入,加之Google在V8的丰富经验,Dart定能有出色的发挥,所以打算第一时间了解下。但Dart究竟如何,是否有足够的竞争力,还要待使用后才能有定论。
一、安装
1. 准备
Linux系统,chromium提供了一个安装依赖的脚本
$ wget http://src.chromium.org/svn/trunk/src/build/install-build-deps.sh
$ source inst...