PHP扩展开发利器之PHP-CPP库官方中文文档

如果对PHP-CPP感兴趣并期望看到中文版,拜托给Github的PHP-CPP-Document库点个赞,你的star我的动力。这段时间对PHP扩展开发比较热衷,起初先趟了一遍(半遍吧)用Zend引擎来开发扩展的方式(http://www.walu.cc/phpbook/preface.md),可是问题来了。正如PHP官方所说的那样,”Zend的好处就是定义了很多宏,可惜坏处是宏真是太多了”。未知的东西是可怕的,也是困难的。所以相对比较起来,这个用纯C++的库来说(PHP-CPP),对于C++开发者真是轻车熟路。翻译内容目前托管到了GitHub上,后续会陆续更新到本博,对PHP-CPP扩展感兴趣或者对于翻译感兴趣的朋友,请多指正目录注:本博的内容旧于下文给出的Github内容,有兴趣的读者建议到Github总阅读。PHP-CPP库有着丰富的文档。下面左侧的菜单中说明了如何在你的服务器中安...阅读全文

跳槽,要不要跳,如何跳?

春节过后是跳槽高峰,有心跳槽的人在犹豫不决。要不要跳槽?如果是钱没给够,心委屈了,跳槽似乎有合适的理由。但是,每个人都觉得自己的工资低了,如果没有一个合适的锚点,那么说钱没给够似乎也很难成为真正的理由。心里委屈也一样,是不是只是暂时的?或是自己过于敏感,需要一点同理心?如果公司开空头支票兑现不了,拖欠工资,诚信有所缺失,甚至自己的主管明显做得不够公平,那就马上做决定,该走就走。在面临跳槽的时候,顾及太多的情感没有意义,很可能对方根本没在乎你的情感。先谈利益,再谈感情。而利益应该建立在确定可执行的契约之上。在一个公司超过两三年,自己接下来收益能怎样,已经基本可以看到头了。是不是值得自己留下来,看看公司的业绩增长,发展势头,再看看自己的能力增长空间,就有答案。有一个事实是,跳槽带来的薪酬涨幅,确实普遍高于公司内部按部就班薪酬涨幅。一般的公司会有一个调节机制,确保这种误差别太大。如果久而久之依然...阅读全文

Nginx 的启动、停止、平滑重启、信号控制和平滑升级

Nginx 的启动假设 nginx 安装在 /usr/local/nginx 目录中,那么启动 nginx 的命令就是/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf 参数 "-c" 指定了配置文件的路径,如果不加 "-c" 参数,Nginx 会默认加载其安装目录的 conf 子目录中的 nginx.conf 文件。Nginx 的停止nginx 的停止方法有很多,一般通过发送系统信号给 nginx 的主进程的方式来停止 nginx。从容停止 nginkill -QUIT `/usr/local/nginx/logs/nginx.pid` 字符是数字键盘 1 字符左边的那个字符,不需要 Shift,直接按 ` 字符即可。如果在 nginx.conf 配置文件中指定了 pid 文件存放的路径,该文件中存放的就...阅读全文

工作效率之动态IP域名化篇

在公司里,RD们不免会使用一些代理服务来进行抓包操作。那么就需要获取代理服务器(一般为自己的电脑)的内网IP。然而,这个内网IP并不是固定不变的。所以,每次配置代理IP时就略显麻烦。那么,下面就来聊聊如何解决这个尴尬,提升效率。方案将非固定IP实时解析到域名中。利用阿里云的域名解析开发者API进行定时的更新。其中的定时用本机(Mac)的Launchd实现(类似Linux下的Crontab)。原材料Mac(或者Windows 但本文仅谈及Mac配置方法域名(如 ihuxu.com如果没有域名可以到freenom.com中注册一个免费域名,然后将其DNS切到阿里云免费的DNS云解析服务中即可。阿里云账号利用阿里云提供开发者的DNS管理相关的AP步骤下载阿里云SDK & 编写代码库:https://github.com/aliyun/aliyun-openapi-php-sdk.g...阅读全文

Linux查看物理CPU个数、核数、逻辑CPU个数

# 总核数 = 物理CPU个数 X 每颗物理CPU的核数# 总逻辑CPU数 = 物理CPU个数 X 每颗物理CPU的核数 X 超线程数# 查看物理CPU个数cat /proc/cpuinfo| grep "physical id"| sort| uniq| wc -# 查看每个物理CPU中core的个数(即核数cat /proc/cpuinfo| grep "cpu cores"| uni# 查看逻辑CPU的个数cat /proc/cpuinfo| grep "processor"| wc -查看CPU信息(型号)
cat /proc/cpuinfo | grep name | cut -f2 -d: | uniq -查看内 存信息
# cat /proc/meminf文章来源:http://www.cnblogs.com/emanlee/p/3587571.htm阅读全文

迷茫和进步

最近收到一份读者留言,问了个问题,大概意思是说编程两年,觉得进步不大,很有压力。每天都是重复性劳动,要如何摆脱这种状况?有时候觉得自己思维能力差,怀疑自己没有当程序员的能力。应该以什么样的心态来面对自己的怀疑,以及看待自己能不能做程序员的问题?会对自己的未来很迷茫,不知如何来规划自己的职业以及未来。先不说我自己,说说我身边的一些事。之前写过一篇《关于 Level 和 Promotion,其实就那么简单》,大概提到过:Google、Facebook、Airbnb 等公司,对于 Software Engineer,本科毕业一般差不多是 L3,以后的几年,只要工作还算勤勉踏实,一般慢慢总会升到 L5。但是 L5 往上,如果走纯技术路线,升级也不是一定有保障的。如果转管理路线,那也要看能力和机遇。一个在 Google 的好朋友跟我说过他认识的两个人。这两个女生都是差不多十年前 L3 或者 L4 ...阅读全文

扎克伯格有心从政?他已经在走访民间了

《名利场》杂志撰稿人表示,Facebook的CEO马克·扎克伯格为2017年设定的一项个人目标让人觉得他有从政的打算,而且他最近的一些行动,似乎更是加深了人们的这个怀疑。以下为原文内容和大多数美国人不一样,32岁的亿万富翁马克·扎克伯格对待自己的新年目标非常认真,不会轻易地半途而废。他曾经的目标包括每天跑步一英里,阅读25本书,建造一个人工智能管家。但今年,扎克伯格的目标似乎添加了一点政治色彩。“2017年我要做到的一件事,就是在年底前到美国各州走走,结识那里的人,”他在Facebook上写道。他表示,要实现这个目标,他必须前往另外30个州。“经过了去年的动荡不安,我希望能走出去,与更多的人谈论他们的生活、工作,以及对未来的想法。”在某些人看来,这个新年目标似乎表明扎克伯格的目光已经超越了他的社交媒体帝国,有了从政的打算。大约一年之前,扎克伯格敦促Facebook董事会批准一个新规定:如...阅读全文

使用GDB调试PHP代码,解决PHP代码死循环

最近在帮同事解决Swoole Server问题时,发现有1个worker进程一直处于R的状态,而且CPU耗时非常高。初步断定是PHP代码中发生死循环。下面通过一段代码展示如何解决PHP死循环问题。通过ps aux得到进程ID和状态如下,使用gdb -p 进程ptrace跟踪,通过bt命令得到调用栈htf 3834 2.6 0.2 166676 22060 pts/12 R+ 10:50 0:12 php dead_loop.phgdb -p 383(gdb) b#0 0x00000000008cc03f in zend_mm_check_ptr (heap=0x1eaa2c0, ptr=0x2584910, silent=1, __zend_filename=0xee3d40 "/home/htf/workspace/php-5.4.27/Zend/zend_variables.c"...阅读全文

你该什么时候跳槽

还记得多年以前,我们公司的一位分公司总经理跟我们分享的时候,让全场哗然的一句话。当然,当时大家哗然的原因有很多,有佩服这位总经理的直言不讳,有惊讶于他跳槽公式的精确程度,而我,则惊讶于他的自信和冒险精神。这位高管是个台湾人,才华横溢,为人幽默,从年轻的时候就是个积极冒险的人。三十多年前大学一毕业就进入了世界顶尖五百强当管理培训生,但没做多久就追逐自己的梦想去了美国念研究生。后来进了我们公司台湾总部做了十多年,随着大陆经济慢慢崛起,他也敏锐地嗅到了机会,于是毅然而然地在台湾事业如日中天的时候转岗到大陆,甚至都没知会家人,听说气得他太太足足一个月没有理会他。事实证明他的选择时正确的,当他台湾的同僚发展机会慢慢萎缩的时候,他在大陆一直做得很好,直到成为了我们这一家分公司的总经理。在他的分享中,他将自己起伏的职业生涯都融进了一个个幽默段子,在场的同事们不时爆发大笑,但当他非常认真地在白板上写下他的...阅读全文

2016年度回忆与总结 – 低头

近来,一直在想着这篇年终总结该如何写、写什么。今天,在YouTube上翻到赵本山的一次访谈节目,他在里面讲到,做人可贵的是学会低头。当然,这个低头对于本山大叔来讲更多的是居高时的低调。然而,我拿它来作为2016年的题目,深深地契合我这一年的经历。工作年初,部门内部进行调整,工作内容从热门微博到话题。随之,搬到了隔壁大楼(泰鹏大厦)进行为时4个月的封闭开发。在一个不大不小的会议室里,整整塞满了从开发、产品到测试将近30人。在那里面我们共同创造了超级话题,整整4个月的时间,从大衣穿到T恤,从30人的共同取暖到一起蒸桑拿,甚是深刻。也正是这4个月,我学到了对于代码规范的遵守、高并发场景的项目设计、与更多部门同学的沟通与联调、独立推进团队项目直到上线(该项非我期望)。7月份,搬进新家。幽美的环境,“准点”的班车,“美味”的食堂,“硕大”的室内篮球场。坐在工位上,深深地呼吸着空气中未超标的甲醛,很是...阅读全文

Codeforces Round #345 (Div. 1) C. Table Compression

原题C. Table Compressiotime limit per tes4 secondmemory limit per tes256 megabyteinpustandard inpuoutpustandard outpuLittle Petya is now fond of data compression algorithms. He has already studied gz, bz, zip algorithms and many others. Inspired by the new knowledge, Petya is now developing the new compression algorithm which he wants to name dis.Petya decided to compress tables. He is give...阅读全文

扎克伯格把钢铁侠的智能助手造出来了,说句话就能控制整个豪宅!

Facebook 创始人马克·扎克伯格是一个喜欢挑战自己的人。2015 年,他立志每周都读一本新书。而今年,他给自己的挑战更加有技术含量:搭建一个人工智能系统,就像《钢铁侠》里的 “Jarvis” 那样,理解语音/文字指令,去控制家里所有的电器…你猜怎么样?他还真完成了。今天扎克伯格专门发了一篇博文,详细介绍 Jarvis 是怎样搭建起来的。这台 Jarvis “人工智能电脑”能做的事情,其实已经远超过市面上任何一个同类或类似产品:它支持文字和语音指令,能控制空调温度高低、调整灯光明暗,也能从网上搜歌自动播放,还能烤面包、给他家迷之画风的“野兽”自动喂食。就是这坨跟墩布一样的东西…而且大家都知道,扎克伯格在时尚方面非常省事儿,一年到头就是一件灰色的 T 恤——不知道的是他连“从衣柜里拿出 T 恤”的功夫都省了!因为他组装了一门大炮,用 Jarvis 控制,每天早上接收命令朝他打出一件新...阅读全文

深度优先搜索之栈解迷宫(C++)

在之前的一篇关于搜索的文章中《广度优先搜索算法队解迷宫问题》有提到深度优先搜索(dfs)算法,其中有一种就是本篇文章提到的实现方法:利用栈解迷宫;《广度优先搜索算法队解迷宫问题》中利用栈解迷宫有一个bug,比如:在x点出发,向右走直到尽头回到x点,此时在向其他方向(比如上),那么不能再走曾经向右走过的路(坐标)。这次,我们增加一个direct_mark数组,来标记在每一个坐标上曾经走过的方向。程序范例时间复杂度在一个m*n的迷宫中,最糟糕的情况是每个点的四个方向均探索了,即o(m*n文章来源:胡旭博客 => 深度优先搜索之栈解迷宫(C转载请注明出处,违者必究阅读全文

分治法解矩阵乘积

题目假设有A,B两个矩阵,且其均为n*n维矩阵,n为2的幂(n>=2)。求A与B的乘积。通过上图我们可以看到书中的利用分治法解决的伪代码。解决思路一暴力解法时间复杂度O(n^3程序范例解决思路二利用分治法解决矩阵乘积程序范例时间复杂度其时间复杂度不等式为:T(n) = 8*T(n/2) + Θ(n^2),所以其时间复杂度为O(n^3测试假设A,B均为521*521的矩阵,并利用0-99的随机数初始化。分别利用暴力解法和分治法进行求解。程序如下测试结果# ./a.out :( ...阅读全文