文档章节

我为什么要做 zendAPI 项目

zendapi
 zendapi
发布于 2017/09/11 15:32
字数 1270
阅读 964
收藏 6
点赞 3
评论 4

经过紧张的开发,我终于费了九牛二虎之力将 zendAPI 的项目官网做好上线了,眨眼已经入职奇虎一年了,我也走完了我的职业生涯规划的第一年,别问我之前4年干啥去了,我去潇洒了 (拉着几个大学同学创业去了)。回想这一年一路走来有太多的酸甜苦辣了,不过总体来说吉人自有天相过程还算顺利。

曾经有人问我,你为什么要做开源项目呢?现在开源项目这么多,在 Github 上大到操作系统,小到一个网页按钮的颜色设置都有相应的开源项目,我们拿来用就可以了,为什么还得自己去费这么大的力气去做一个根本不赚钱的项目呢?平时工作已经这么忙了,还得挤出时间去研究和开发。

对于这个问题我想从如下几个方面进行回答:

#PHP 内核项目的现状

随着 PHP7 的发布,其实 PHP 在语言特性和运行速度上来说已经可以满足了绝大数的系统开发,在易用性和稳定性上都没有什么问题,同时文档书籍丰富,非常容易入手。但是在另一个方面 PHP 社区在 zend engine 也就是 PHP 内核开发上就不是很用心了,接口难用,基本没有什么好的文档,大大增加了扩展的开发。曾经有一个笑话说 PHP 社区里面的几个重要成员要是同时失踪了,PHP 内核项目估计就完蛋了,盘子太大不好接。笑话归笑话,但是也从侧面反映了 PHP 社区确实在做的不好,核心引擎的文档实在太匮乏。另一方面是因为是 C 开发,虽然速度快,但是开发效率不是很高,项目代码量大了加上各种宏调用,可读性确实不高。

为了改善这种情况,我尝试做 zendAPI 项目,使用现代的 C++11 对 zend engine 的核心数据结构和接口进行二次封装,同时保证封装出来的接口都有文档描述。努力在不降低性能的前提下,大大降低 PHP 扩展的开发难度。

#个人成长经历

我对计算机是有很大的兴趣,回想当年高考就立志要成为一名牛叉的程序员,高中时候就买了很多计算机书籍,不过都被高中老师收缴了,高考之后就迫不及待报考了计算机,在大学开始了自己的自学历程。这个阶段我是处于一个朦胧的阶段,相信自己的自学能力,但是事实证明没有好的导师指导,光靠自己不行。总得来说,从大三开始到入职奇虎这5年,一直处于自己探索阶段,各种折腾,浪费了不少青春,收获总得来说不是很大。这个人生经历让我具备了一般人所没有的危机感,正是这种危机感让我一刻也不敢松懈。入职奇虎之后,有了一份稳定的工作,从此一天当作两天来用,恶补我之前浪费的青春。
总结来说,我不怕折腾。

#关于从新发明轮子问题

有人曾经问我,很多开源项目都已经有了,为什么还要重新发明轮子, 比如像 zendAPI 这种项目有类似的项目

PHP-CPP 官网网址: http://http://www.php-cpp.com/ 做了很久了,也算比较成熟了。
PHP-X 官网网址:https://github.com/swoole/PHP-X 国内 PHP 大牛韩天峰(swoole 框架作者)的项目

是不是别人做了,我们就放弃做了?放弃享受架构与实现整个项目的乐趣,或者为自己的懒惰找一个借口?
我感觉答案是否定的,我感觉我们不但要做,而且就是要着重去重新发明这个轮子,我们的重点不在轮子本身,而是发明轮子这个过程,轮子的成败其实对我们个人来说没有过程重要,在重新发明轮子的过程中,相信我,您会收获很多的。

#个人情怀

一直以来,我都在思考一个问题,作为一名程序员,我应该做到什么程度,才对得起自己,没有白活一生,我一直都很羡慕国外的那些大牛,为整个领域做出了杰出的贡献,我也很想跟他们一样,为后人留下点什么。所以我一直在追求着一样东西,目标一直就没有变,zendAPI 以后算我留下的一个作品,我会一直在路上,这个只是一个开始。

在文章的最后,借用 Linux 中一句很出名的话结束这篇博文, Have a lot of fun !

© 著作权归作者所有

共有 人打赏支持
zendapi

zendapi

粉丝 10
博文 12
码字总数 9448
作品 1
程序员
加载中

评论(4)

l
lidonghe
很棒,支持
zendapi
zendapi

引用来自“盗宜有道”的评论

php 扩展开发没怎么用过,之前看过php7的扩展开发,确实没找到什么文档(英语水平不是很好),都是各大牛自己的总结,但我觉得把现在的 Zend API 的文档如果有人维护起来,那么 php 扩展开发的门槛会降低很多,很期待未来能够看到你的 zendapi

回复@盗宜有道 : 这样可以节省咱们大量的时间。
Coosky
Coosky
php 扩展开发没怎么用过,之前看过php7的扩展开发,确实没找到什么文档(英语水平不是很好),都是各大牛自己的总结,但我觉得把现在的 Zend API 的文档如果有人维护起来,那么 php 扩展开发的门槛会降低很多,很期待未来能够看到你的 zendapi
六月是你的谎言
六月是你的谎言
支持
zendapi/zendapi

zendAPI 是什么? zendAPI 是对 Zend Engine 的 C 接口使用 C++ 的最新标准 C++11 进行而面向对象的封装,从而屏蔽了底层 Zend Engine API 的接口复杂性,加快开发 PHP 扩展的效率。从而让 ...

zendapi ⋅ 2017/09/08 ⋅ 0

Zend Engine 的 C++ 封装--zendAPI

介绍 该项目是对 Zend Engine 的 C 接口使用 C++11 进行而面向对象的封装,从而屏蔽了底层 Zend Engine API 的接口复杂性,加快开发 PHP 扩展的效率。 项目官网地址:www.zendapi.org 设计目...

zendapi ⋅ 2017/09/08 ⋅ 6

[研究] 深入PHP内核之ZendAPI扩展篇

PHPNEWEXTENSION(phphello, phphello.c, $ext_shared) 前面插一个很好笑的报道:“2009/02/27日新浪:首节战罢,火箭命中率27.8%对上骑士17.6%,篮板15对7,助攻4对1”,这是我看过最搞笑的篮...

长平狐 ⋅ 2012/11/19 ⋅ 0

ZendAPI 的 C++ 封装库--PHP-X

PHP ZendAPI 的 C++ 封装库,可以用于快速开发 PHP 扩展。PHP-X 使用了完全面向对象的设计,使得 PHP 扩展开发、C++ 嵌入 PHP 变得非常简单,实现了 C++ 和 PHP 的互通。 环境依赖: PHP-7....

matyhtf ⋅ 2017/06/13 ⋅ 15

开发人员需要知道 How,What,Why

你是否工作在这样的一个大公司里——他们工作效率缓慢,会议无穷无尽?你是否有被告诉去完成一个任务,去开发一个API,但你的不知道它会用在哪里,怎么用?你只是按照文档在技术上把它正确的...

红薯 ⋅ 2010/10/26 ⋅ 8

互联网项目管理感悟4一道天地法将

作为一个技术负责人,当你接手一个新项目的时候,马上就开始去做吗?我觉得需要先认真思考几个问题,哪几个问题?为什么?这里借助老子的思想来阐述,道天地法将。 道,指的是项目的目标,就...

铁棍山药 ⋅ 01/21 ⋅ 0

如何才能让自己有一个更好的发展?

昨天和一位老朋友聊了一下,解决了我一个一直以来困扰我的问题,就是互联的技术管理为什么需要很深的技术? 因为我曾经问过一些人,他们都告诉过我,在技术这块要做管理, 技术的占比从50%~9...

苗栋栋 ⋅ 01/21 ⋅ 0

cocos2dx,走四棋.求移动棋子的原理

@王选易 你好,想跟你请教个问题: 你的这个项目.http://my.oschina.net/wangxuanyihaha/blog/265649 //移动棋子,src为当前点,dest为要移动到的点void ChessboardController::tryMove(cons...

回去干活 ⋅ 2014/05/31 ⋅ 2

六问禅道2:为什么别人能看到我的任务

我自己从2010年8月开始接触和使用禅道项目管理软件,由刚开始的只使用测试--Bug管理模块,到现在的所有模块均有在使用。 在不断的使用过程中,加上长期混迹在禅道QQ技术交流群,对禅道的使用...

炒蚕豆吃蹦豆 ⋅ 2017/03/13 ⋅ 0

论开源之商业模式

时间飞快,转眼自己的开源项目 Smart Framework 已经两个月了。在这段时间里,我学到了很多东西,更重要的是,也结交了很多朋友。可以感受到自己一步一步地往前走,朝着自己向往的方向在走。...

黄勇 ⋅ 2013/10/31 ⋅ 29

没有更多内容

加载失败,请刷新页面

加载更多

下一页

vbs 取文件大小 字节

dim namedim fs, s'name = Inputbox("姓名")'msgbox(name)set fs = wscript.createobject("scripting.filesystemobject") 'fs为FSO实例if (fs.folderexists("c:\temp"))......

vga ⋅ 4分钟前 ⋅ 0

高并发之Nginx的限流

首先Nginx的版本号有要求,最低为1.11.5 如果低于这个版本,在Nginx的配置中 upstream web_app { server 到达Ip1:端口 max_conns=10; server 到达Ip2:端口 max_conns=10; } server { listen ...

算法之名 ⋅ 今天 ⋅ 0

Spring | IOC AOP 注解 简单使用

写在前面的话 很久没更新笔记了,有人会抱怨:小冯啊,你是不是在偷懒啊,没有学习了。老哥,真的冤枉:我觉得我自己很菜,还在努力学习呢,正在学习Vue.js做管理系统呢。即便这样,我还是不...

Wenyi_Feng ⋅ 今天 ⋅ 0

博客迁移到 https://www.jianshu.com/u/aa501451a235

博客迁移到 https://www.jianshu.com/u/aa501451a235 本博客不再更新

为为02 ⋅ 今天 ⋅ 0

win10怎么彻底关闭自动更新

win10自带的更新每天都很多,每一次下载都要占用大量网络,而且安装要等得时间也蛮久的。 工具/原料 Win10 方法/步骤 单击左下角开始菜单点击设置图标进入设置界面 在设置窗口中输入“服务”...

阿K1225 ⋅ 今天 ⋅ 0

Elasticsearch 6.3.0 SQL功能使用案例分享

The best elasticsearch highlevel java rest api-----bboss Elasticsearch 6.3.0 官方新推出的SQL检索插件非常不错,本文一个实际案例来介绍其使用方法。 1.代码中的sql检索 @Testpu...

bboss ⋅ 今天 ⋅ 0

informix数据库在linux中的安装以及用java/c/c++访问

一、安装前准备 安装JDK(略) 到IBM官网上下载informix软件:iif.12.10.FC9DE.linux-x86_64.tar放在某个大家都可以访问的目录比如:/mypkg,并解压到该目录下。 我也放到了百度云和天翼云上...

wangxuwei ⋅ 今天 ⋅ 0

PHP语言系统ZBLOG或许无法重现月光博客的闪耀历史[图]

最近在写博客,希望通过自己努力打造一个优秀的教育类主题博客,名动江湖,但是问题来了,现在写博客还有前途吗?面对强大的自媒体站点围剿,还有信心和可能型吗? 至于程序部分,我选择了P...

原创小博客 ⋅ 今天 ⋅ 0

IntelliJ IDEA 2018.1新特性

工欲善其事必先利其器,如果有一款IDE可以让你更高效地专注于开发以及源码阅读,为什么不试一试? 本文转载自:netty技术内幕 3月27日,jetbrains正式发布期待已久的IntelliJ IDEA 2018.1,再...

Romane ⋅ 今天 ⋅ 0

浅谈设计模式之工厂模式

工厂模式(Factory Pattern)是 Java 中最常用的设计模式之一。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。 在工厂模式中,我们在创建对象时不会对客户端暴露创建逻...

佛系程序猿灬 ⋅ 今天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部