Jump to Navigation

Document

Programming articles and books.

32位 arch linux上使用4G内存:PAE内核使用

原来2G内存的电脑,升级到4G内存后,由于系统是原版的32位archlinux,无法完全利用上4G内存。

在aur.archlinux.org上有个linux-pae内核包,用于32位系统上使用超过4G的内存。

按照编译普通aur包的方式编译出来新的内核包,

pacman -U linux-pae-3.14.3-2-i686.pkg.tar.xz linux-pae-headers-3.14.3-2-i686.pkg.tar.xz

重新使用新安装的内核启动系统。即可利用到4G以上的内存了。

不过,原来安装的一些内核模块需要重新编译安装,像virtualbox,vmware这种第三方的内核模块。

像virtualbox可以使用dkms install vboxhost/4.3.10命令安装,

内核模块安装到了/usr/lib/modules/3.14.3-2-pae/kernel/misc/

再用modprobe vboxdrv后,可以正常使用。

Category:

修改系统路由表, 自行控制网络路由

在登陆vpn后,vpn软件一般会修改系统的路由表,

把默认的路由改到使用vpn,这当然是登 陆vpn 的主要目的。

但有时,登陆vpn单纯只为了访问有些限制性网络,如公司内网,

而其他的网络请求,像浏览器访问网站,软件下载,根本不需要通过VPN。

这种情况下,由于走VPN的网络连接目标相对比较少,并且如果都走VPN的话,还可能导致有些请求变慢,

可以把系统的默认路由改为原来的,然后通过添加针对某些私有网络的访问目标的路由信息,

实现比较完善的支持这种需求的网络。

Category:

Linux运行goAgent提示:certutil: function failed: security library: bad database.

运行 proxy.py 是有错误提示,信息如下:

certutil: function failed: security library: bad database.

Code example:
1
2
3

Category:

程序运行时动态修改进程名

在做平台的过程中,碰到一个可能的需要,平台服务的的进程名一般都不变的,
如果需要动态在外部监控进程的执行状态,比如程序正在执行什么功能,
也许可以通过动态修改进程的名字实现,可以把正在执行的功能做个摘要放在进程名字中。

在linux上,有一个系统调用prctl,这是一个综合性的函数,可以实现一些进程的控制功能。
动态修改进程名的功能也就是在prctl函数。

来看看prctl的函数原型,

NAME
prctl - operations on a process

SYNOPSIS

沉浸式学 Git

沉浸式学 Git 是一份强调通过实践来掌握 Git 基础用法的指南。 本书包含 52 个实验,这些实验经过精心设计,篇幅皆十分短小, 只需几分钟时间便可完成。对于想要快速学习 Git 的朋友而言, 这是一本不可多得的好书。

本书原作者为 Ruby 编程语言大师 Jim Weirich,我利用业余时间 翻译完成。

本书许可为 Creative Commons, Attribution-NonCommercial-ShareAlike License。
在线阅读:http://igit.linuxtoy.org/index.html
本书源码:https://github.com/xuxiaodong/gitimmersion

若有任何问题,欢迎反馈。

Category:

tcpcoh: tcpcopy over http

tcpcoh,正如标题所示,是一种基于http的tcpcopy功能。
其流程为,某tcp服务程序,可以被客户端程序通过http的方式访问,
客户端与该tcp服务之间没有直接连接,
而是通过tcpcoh实现模拟tcpcopy功能,在客户端与服务器端交换tcp包。
这种的方式优点是,tcpcoh不需要理解基于tcp的服务协议,
因此从理论上说,tcpcoh支持所有的tcp协议服务程序。

tcpcoh网络架构,

使用NGINX+PHP实现comet服务的nginx配置

正常情况下,nginx为了最大化优化其负载能力,
大量使用缓存技术,比如缓存http响应内容直到缓冲区满再输出,可以最大化提高网络吞吐量。
在nginx连接fastcgi时,也使用相同的缓存技术。
但是,对于comet来说,缓存只能让comet的传输信息延迟更大,甚至可能收不信息。

在现在的nginx版本中,提供了一些参数,可以优化这种应用场景。

一般comet的实现,需要尽量关闭不需要的所有缓存,在无法关闭的时候减小缓冲区大小。
还需要尽量能保持连接跟踪,以便能在有信息时及时响应。

这里说明的是使用php fastcgi实现简单的comet服务端的情况。
具体在nginx中,配置需要注意这些参数,
fastcgi_keep_conn on; # < solution
proxy_buffering off;
gzip off;
fastcgi_buffer_size 100;
fastcgi_buffers 2 100;
fastcgi_busy_buffers_size 100;

Category:

通过http实现简单的远程shell访问代理

当机器处理不同局域网时,如果希望能够互通,一种常用的也比较可靠的方式是使用vpn。
如果是自己搭建私有vpn,则需要一台可控的公网IP服务器。
在没有这些资源的情况下,希望机器的互通比较困难。

在此,给出一种并非完全的互通方式,可以实现单向的远程shell命令执行方式。
这种方式能执行另一局域网中机器的命令,实现简单的类似远程登陆管理的功能。
这就是使用http实现的远程shell访问代理。

实现逻辑为,
在一台有公网访问的http服务器上安装一个像php一类的脚本程序,
该脚本程序分服务端模式与客户端模式。
服务模式下,脚本程序不断轮循命令记录数据库表,查找需要远程执行的下一条命令记录,
并把查找到的命令记录依次输出到访问该脚本的客户端组件。
客户端模式下,脚本程序不断轮循命令响应数据库表,查找需要返回的已经执行完的下一条命令行输出,
并把查找到的命令行输出记录输出到访问该脚本的客户端组件。

fastcgi客户端PHP语言实现

在一个项目中,希望使用php直接与PHP-FPM进程通信,
跳过nginx代理,减少一点中间过程的效率损耗,
同时,更重要的是把PHP-FPM当作一个PHP进程池使用,
不要受到关于nginx的超时、缓冲设置的影响,让不同处理程序之间通信更直接,
特意使用PHP语言编写了一个fastcgi客户端类,实现协议的打包、发送与接收工作。

在经过一段时间的完善之后,确定这种方式非常适用我们的需求场景,
花了一些时间,重新使用C语言编写了一个中间代理服务,
并集成了一个C版本的fastcgi客户端实现,现在已经不再需要这个PHP版本的了。

现张贴在此,给有兴趣的朋友一个示例,给需要的朋友当作参考,
在实现fastcgi类的过程中,总结下来,需要注意的一些点,
对二进制数据包的封装,像处理C语言中的不同长度的整数,字符串在PHP语言中的处理方式。
对C语言中的变长结构体类型的数据结构,在PHP中不太好表达,需要使用比较原始的分支逻辑来实现,
还可以了解网络协议的封闭数据包,解析数据包的基本模式。

Category:

projecttox项目介绍

projecttox旨在实现一个能够替代skype的开源支持视频通话的即时通信IM,
它的目标是简单易用,消息全程加密,保证通信与通话的安全。

在技术上,与skype类似地可大概分为核心部分与界面UI部分。
核心部分实现了主要的网络通信,网络穿透功能,加密安全功能,视频编码功能。
界面部分是基于核心的功能,使用Qt开发,比较容易地实现跨平台功能。

网络部分最开始使用了UDP协议,为了能支持简便的网络穿透功能。
最近,开发工程师正在添加TCP的支持。
可能将来projecttox也会像skype一样,两种网络协议混用。
在不同的功能上使用不同的网络协议,简化代码,提高可靠性与可用性。

目前在网络穿透功能上,核心部分已经实现了非对称防火墙打洞功能,
对称防火墙的打洞正在做理论研究与测试,相信不久之后也能够加入到核心代码。

在分布式网络方面,使用的是类似bittorrent的分布式DHT网络结构,这一点也与skype类似。
但相比skype来说更是一种无中心结点的分布式网络环境。

Category:

页面

订阅 RSS - Document


Main menu 2

by Dr. Radut