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

letsencrypt安装

letsencrypt安装

前言

注意,要在域名已经指向到的服务器上才能安装。

letsencrypt会自动检测不同平台上的apache或者nginx包是否安装,以此生成对应证书。

还是使用mannal方式安装比较好,(git clone源码)。

mannual方式安装

第一步,使用certonly生成证书。

$ git clone https://github.com/letsencrypt/letsencrypt

命令,(先停止nginx服务,该命令执行过程中要使用80/443端口)

自建ngrok服务

自建ngrok服务

源代码

ngrok1.7及以下版本有源代码

ngrok2+版本没有源代码,但有bin版本。不知道是否有什么黑科技呢。

本文以有源代码的ngrok-1.7为例,说明自建ngrok服务的过程。

生成ngrok使用的自签加密证书

ngrokd客户端与ngrok客户端tunnel全程使用tls加密传输,所以要在编译前生成加密证书。

简单的生成脚本,

golang vendor基本使用

golang vendor基本使用

vendor特性的引入

vendor的作用是维护第三方包的另一种形式。

vendor特性的引入会影响import语义。

vendor特性在go1.5中实验性引入,通过GO15VENDOREXPERIMENT=1/0环境变量控制是否启用。

vendor特性在go1.6中正式默认启用,但保留了GO15VENDOREXPERIMENT环境变量。

go1.7中将移除GO15VENDOREXPERIMENT环境变量。

vendor特性的诠释

设计基础

  • 不rewrite gopath
  • go tool来解决
  • go get兼容
  • 可可reproduce building process

诠释原文

GO1.6 cgo使用上的改变

GO1.6 cgo使用上的改变

在新go1.6版本中,针对cgo的指针使用制定了规范,并且体现在了编译器中。
在不规范使用cgo指针的时候,程序将报错退出。

例如,在go1.5中,可以编译返回unsafe.Pointer类型的go导出函数。

swift语言设计中很丑的地方

字符串操作

字符串遍历,字符串位置索引,字符串长度。

for-in关系字

直接用for好了,还专门给array一个关键字的设计真够丑了。

inout参数与指针

指针概念绑定到参数传递上定义吗?

闭包定义

为什么大括号要包住整个闭包呢?中间还插入一个in单词,好拽。

应该还会有其他的吧。

GO语言学习资料

GO语言学习资料

https://golang.org/

http://golang-china.github.io/gopl-zh/

http://gopl.io/

http://godoc.golangtc.com/pkg/

源码剖析 https://github.com/qyuhen/book

https://tracymacding.gitbooks.io/implementation-of-golang/content/index.html

项目:https://github.com/avelino/awesome-go

Category:

qt.rust绑定中的signal/slot实现

qt.rust绑定中的signal/slot实现

中继层次

中继实例的回收,可以使用QObject parent方式回收,或者,手动管理回收。

有没有可能使用QSignalMapper来管理呢

回调层次

signal连接层次

C++11信号连接

传统Qt信号连接

信号连接到一个函数或者闭包,或者另一实例的slot。

连接到另一个实例的语法难以实现,要写成闭包,而闭包则无法释放空间的问题。因为rust无法表达方法变量。

关闭信号连接

Qt支持关闭某个实例的所有连接,支持关闭某个实例的某个信号的所有连接。

支持关闭某个实例连接到另一实例slot的连接。

控制粒度还是非常细的,功能非常完整的。

可能QObject的findChildren有用,遍历object的层次关系。

Category:

用golang实现PHP扩展

用golang实现PHP扩展

一种方式,完全在一个项目中实现

一种方式,在两个分开的项目中实现

技术要点,

  • 需要用PHP调用golang实现的函数。
  • 需要用golang调用PHP写的函数。

在一个项目中实现

项目完整性比较好,一个项目代码就直接能够生成PHP需要的.so扩展。

当然不好的地方也有,就是go编写的功能代码部分不方便在其他项目中重用。

所以具体使用哪个方式,看go编写的功能代码是否需要在其他的项目重用。

在分开的项目中实现

分开的两部分分别是,php扩展部分,go共享库部分。

至于为什么还是需要一个php扩展部分,是因为即使用go写功能代码,仍旧需要使用C编写桥接代码。

抛出go函数

编写go代码与其他go代码并没有什么不同。

在写完go代码的基础上, 为要在.so共享库中抛出的函数加一行指令,

go实现gRPC的服务端的PHP扩展

go实现gRPC的服务端的PHP扩展

一种支持PHP语言编写gRPC服务端的方案

在有这个方案的想法时,并不确定技术上是否可行,只是觉得可行性程度挺高。

为了确认这可行性,先行做了些测试,所以先把技术点的可行性放在了文章的开头部分。

方案的设计将在总结可行性的基础上做详细说明,从本文的第二部分开始。

可行性验证

需要验证的主要有,

  • 从PHP调用go函数
  • 从go调用PHP函数
  • 把go代码编译为库
  • 把go库链接进PHP扩展
PHP调用go函数

上篇已经验证并实现。

用go实现PHP扩展

上篇已经验证并实现。

go调用PHP函数

如果需要go调用PHP函数,其实先要确定的是用C能够调用PHP函数。

好在我们有zend_API.h中的两个函数:

  • call_user_function
  • call_user_function_ex

而且比较成熟,不再多说明了。

rust实现继承

rust实现继承

目前找到两种方式 ,一种使用AsRef trait,一种使用Deref trait,都能实现单继承,而AsRef则能实现类似多继承的功能。

第一种,显式的.as_ref()

AsRef这是rust提供的一个trait,用来做类型的转换,例如,

impl AsRef for NButton { fn as_ref(&self) -> &NWidget { return &self.nbase; } }

其含义为,为NButton类型实现AsRef trait,可以把NButton类型引用转换为NWidget引用。

前提是NButton引用能在某处存放着一个nbase,如self.nbase。

有了这个trait实现之后,可以简单的方式实现类型转换了,

 btn.as_ref().callsth();

这个在使用上稍微有点不方便,需要显式地调用as_ref()方法。

多继承:

Pages

Subscribe to www.qtchina.tk RSS


Main menu 2

by Dr. Radut