Jump to Navigation

Welcome!

  NullGet是使用Qt编写的,运行于多种平台的GUI界面的多线程多协议断点续传下载软件。  使用NullGet可以轻松下载网络的多种协议的数据流,加快下载速度,支持断点续传,目前支持的协议有:HTTP,HTTPS,FTP,MMS,RTSP。而且它能运行于当前大多数流行的操作系统,包括Windows,Linux,FreeBSD等。     下载NullGet

  NullFXP 是一个基于Qt 4 开发的SFTP/FTP 客户端软件。目前已经实现基本的多文件上下传功能。详细信息查看本站项目说明页面。     下载nullfxp

  我们的目标是打造一个开源的,跨平台的,多线程的,运行稳定的下载软件,另一个就是整理Qt库开发跨平台GUI应用程序的相关资料。欢迎各位朋友对本站开源项目提供意见及建议,欢迎有兴趣的朋友参与本站开源项目,请联系 drswinghead at gmail dot com

简单动态web js/css压缩与cdn系统

1、目标,
优化处理过程,不再需要每次有svn提交重复处理所有文件。

自动化程度更高,添加自动处理多文件控件的动态按需合并功能。

采用实时动态js/css压缩,只在有请求时才有压缩,而不是之前的预先把所有文件压缩好。

相对可靠的自动varnish缓存清理,降低从更新代码到生效的时间延迟。

减少svn钩子端代码量和处理时间,SVN服务器减负。

添加处理日志,帮助处理异常查询。

调整svn目录结构,更合理规范。

2、使用技术组件,
nodejs做js/css压缩。

nginx/varnish做服务与缓存。

graphicsmagick做图片压缩优化。

3、服务组件图,

4、压缩处理程序流程图,

Category:

php扩展编写中的整数参数接收

在php中没有C/C++语言中的unsigned long long,unsigned int这些无符号整数类型,

在C/C++程序中一般表示为uint64_t,uint32_t等。

如果在php扩展中需要接收这些无符号数据类型,则需要特殊的处理方式。

对于在PHP支持的范围内的整数,可以直接使用"l"参数获取,

但对于赶出php支持范围的整数,一般需要使用"s"参数获取,

之后在C/C++语言中转换成无符号整数。

也就是,通用的情况下,参数定义为mixed(integer/string)类型的。

在扩展中使用"z"接收参数,接收到之后,使用宏Z_TYPE_P判断参数的实际类型,

对于Z_TYPE_P == IS_LONG的时候,直接转换成无符号类型,

因为这情况情况说明PHP正确传递了整数类型的参数。

如果超出了PHP处理的范围,参数会被转换为浮点数,宏Z_TYPE_P应该为IS_DOUBLE类型。

这样就可以根据扩展中判断出来的类型做不同的接收处理。

当使用字符串类型传递这种参数时,Z_TYPE_P == IS_STRING,转换一次就可以。

Category:

做了个php-hyperdex扩展

前几天使用 hyperdex的golang客户端api编写导数据程序,

发现golang API还有一个内存泄漏的BUG,导致长时间导入数据时内存占用非常大。

一般导入100w条后,4G内存的机器已经受不了,但准备导入的数据大概2000w或者更多。

这几天花了点时间,找了个hyperdex把 php 语言API扩展,

发现其已经是很早之前的,已经与现在的hyperdex版本不兼容了。

在此基础出,迁移到了与最新版本的hyperdex兼容,并且添加了HyperdexAdmin相关的功能。

有兴趣的可以看看, 代码在github上, https://github.com/kitech/php-hyperdex

现的状态是基本功能完成可用。

后续的改进包括,

1、支持超时参数。。

2、支持hyperdex官方的C API中的异步执行功能。

3、把代码改到使用hyperdex的C++ API,转为C API是hyperdex在C++ API基础上封装的。

4、admin管理API异常/错误处理完善。

Category:

我阅读过的IT专业书籍、文章

Joel 说软件 2016

golang 编程语言 2016

python cookbook 2015

浪潮之巅 , 吴军, 2012

淘宝技术这10年,子柳,2013

Hadoop指南II

Category:

hyperdex导入数据测试

hyperdex发布了1.0正式版本。
抽了点时间预先测试了一次。

本次测试使用的go绑定api编写的导入数据工具。
对go语言还不太熟悉,写的测试程序可能没有达到最优化状态。
另外hyperdex的go语言api还不完善,跑一段时间后内存被吃光。
使用的是普通的台式机,没有在服务器上测试。
hyperdex 导入数据测试结论,
比较费资源,优化的不够。分区随意,很容易造成数据在多个节点分布不均匀。
导入测试100w记录后,在没有请求的情况依旧占用大量CPU。
导入速度不是太快,在普通台式机上,可写入每秒300-400条记录。
磁盘文件不会清理,目前还不知道怎么清理。
还没有测试区间搜索功能,第二索引搜索功能。

这次测试结果并没有到达预期的效果,但在hyperdex有一个基本的认识。
后面再通过测试程序做更全面的测试。

Category:

svn到git的迁移与过渡方案

svn与git都是源代码版本控制软件,但它们属于不同的时候。
svn特点在集中式的管理方式,而git更适合于当前分布式管理方式。
当前从svn到git的迁移方案,都是以git为目标,从git的角度提供了相对的迁移策略。
使用的比较多的是,git-svn 和 subgit。

前者出现的早,一直是在git包里自带,用的人多些,在最新的版本里对分支的支持已经非常完善了。
但是它只是一个客户端口的解决方案,能让使用人员用git的方式管理svn代码库,并最终把代码存储在服务器的svn服务器上。
后者属于第三方的解决方案,并且是个商业产品。客户端的使用纯git命令而非git-svn命令,
并在git服务器上提供服务器端的配置支持,让服务器上的git与svn服务器保持同步。

在客户端上则看不到svn的影子,只是把git-svn拿到服务器上使用,并且自动化了。

这两种方案最终都是使用 git或者类似git命令管理代码,与向git的迁移目标一致。

Category:

gitlab安装

gitlab是与github类似的git开放代码管理平台,不过gitlab是开源的版本,
可以在自己服务器上搭建类似github的代码管理平台。
gitlab是使用ruby on rails开发的,目前来说已经比较成熟。
在经历上次安装5.x版本的gitlab失败后,最近有抽了点时间,
为了能推动使用git库开发,再次尝试安装了一次,还算比较满意。
现在把安装过程和安装中遇到的问题与解决办法简单总结下来,
以备后续参考。

安装版本选择,
这次选用的是最新的6.4.0版本。
其他主要使用的包版本如下:
https://github.com/gitlabhq/gitlabhq/archive/v6.4.0.tar.gz
centos-6.5-x86_64
ruby-2.0.0-338
python2.7
mysql-5.5
nginx-1.4.3
redis-2.8
git-1.8.5.2

Category:

HyperDex-1.0.0发布了

这个NoSQL实现在所有的NoSQL产品中算得上能让人眼前一亮的。

它使用了不同于其他的任何NoSQL的实现方式组织数据的分布、存储和查询。

这种来自数学机制让它天生有方便分布和查询的功能。

发布通知:http://hyperdex.org/NEWS/

HyperDex特性:

高性能,是现在流行NoSQL速度的2倍以上。

功能强大,多key事务支持。

强一致性,

高可用性,允许可配置的问题结点。

高扩展性,添加结点时自动分布数据。

本版本支持多语言绑定,C, C++, Python, Java, Ruby, 和 Go。

Category:

git submodule 引用一个repo的branch分支

git submodule add -b branch_name git@abc.org:account/efg.git cname
git submodule add -b [branch] [URL] [DirectoryName]

参数在于-b branch_name

这个功能应该是在git-1.8.2加入的,
如果之前需要使用这个类似svn:externals类似的引用任意分支的功能则使用上比较复杂。

在.gitmodules中显示比普通的submodule多了一个branch属性:

[submodule "cname"]
path = cname
url = git@abc.org:account/efg.git
branch = branch_name

Category:

实际项目中的常见算法

【编者按】本文原始内容来源于stackexchange,遵循cc-wiki协议;

近日Emanuele Viola在Stackexchange上提了这样的一个问题,他希望有人能够列举一些目前软件、硬件中正在使用的算法的实际案例来证明算法的重要性,对于大家可能给到的回答,他还提出了几点要求:

页面

订阅 www.qtchina.tk RSS


Main menu 2

by Dr. Radut