PHP语法分析器:RE2C && BISON 总结
在这之前,我曾经尝试过一个项目,就是将我们的PHP代码自动生成so扩展,编译到PHP中,我叫它 phptoc。但是由于各种原因,暂停了此项目。写这篇文章一是因为这方面资料太少,二是把自己的收获总结下来,以便以后参考,如果能明白PHP语法分析,那对PHP源码的研究会更上一层楼地 ^.^…
低噪声、高可扫读;标题、摘要、来源、标签一目了然。
采集自各技术站点的近期文章。
在这之前,我曾经尝试过一个项目,就是将我们的PHP代码自动生成so扩展,编译到PHP中,我叫它 phptoc。但是由于各种原因,暂停了此项目。写这篇文章一是因为这方面资料太少,二是把自己的收获总结下来,以便以后参考,如果能明白PHP语法分析,那对PHP源码的研究会更上一层楼地 ^.^…
用户满意度调查是用户体验工作中重要一项活动。在了解整体满意度、一级指标满意度、二级指标满意度外,还需要了解下一级指标对上一级指标的权重,帮助确定各个方面的工作优先级,为产品优化改进方向提供决策依据。下文将简单介绍一下几种满意度指标权重的计算方法。
比特币是最近相当火爆的一个金融衍生品(瞧咱这口径)。比特币中国提供了一系列 API 来获取和操纵其市场内的比特币。我的小伙伴们基于其 API,完成了一套交易程序。为了提高操作的有效性和技术性,同时作为 python 学习需要,我也参与进来,仿造股票交易软件,为比特币中国绘制了一系列指标图,包括 MACD、BOLL、KDJ 等。
我们在管理数据库和系统的时候,经常需要做rm 删除文件的操作。由于Linux是没有回收站的,rm删除了文件或者目录以后,数据是无法从Windows所谓的回收站中找到并恢复的。这样的话,数据被误删除了以后,想要恢复我们一般需要从备份中,或者找数据恢复公司来恢复数据。但是,在某些比较特殊的情况下,使用了以下方法,我们还是可以找回部分数据的。
在网站开发的时候通常会对POST和GET产生混淆,让人混淆的主要原因是基本上POST能解决的问题GET都能解决,反之亦然。今天就来说说者两者的区别。
& 这个符号在C语言和PHP里都是取地址的意思,我们通常怎么念这个东西?“and符”,估计很多人跟我一样念吧,因为在英文里,这个符号表示“and”这个含义; * 这个符号,在C语言里表示指针,怎么念?“星号”,大概这么着吧,哈哈; # 这个符号,在C语言里,表示预编译指令的前导符,也是Linux环境的注释,怎么念?“井号”,有了C#,念C Sharp,但是没人管#念Sharp,哈哈;
技术领导必须更懂技术吗?做了领导以后,因为工作的关系,许多人都不那么熟悉基础的技术了,结果自己心里没底,更怕遇到问题时在下属面前丢脸。所以,有些人选择了双管齐下——既不放弃领导的工作,又不放弃原有的技能,结果疲惫不堪。还有人干脆选择不当领导了,因为有手艺,才有安全感。
你该去什么样的公司、做什么样的事情、拿多少钱,都取决于一个问题:你想成为一个什么样的人。工作只是人生的一部分,是用来支撑你人生价值的核心框架之一。在你自己没有想明白的时候,没有人能帮你。这就是为什么猎头基本只谈钱——他们没空去和客户讨论人生的意义。
协程(coroutine)顾名思义就是“协作的例程”(co-operative routines)。跟具有操作系统概念的线程不一样,协程是在用户空间利用程序语言的语法语义就能实现逻辑上类似多任务的编程技巧。实际上协程的概念比线程还要早,按照 Knuth 的说法“子例程是协程的特例”,一个子例程就是一次子函数调用,那么实际上协程就是类函数一样的程序组件,你可以在一个线程里面轻松创建数十万个协程,就像数十万次函数调用一样。只不过子例程只有一个调用入口起始点,返回之后就结束了,而协程入口既可以是起始点,又可以从上一个返回点继续执行,也就是说协程之间可以通过 yield 方式转移执行权,对称(symmetric)、平级地调用对方,而不是像例程那样上下级调用关系。当然 Knuth 的“特例”指的是协程也可以模拟例程那样实现上下级调用关系,这就叫非对称协程(asymmetric coroutines)。
前段时间无意中接触了一款叫做“花钱Colormoney”的软件,名为“花钱”,实为帮用户赚钱的一款移动APP锁屏软件。如何赚钱呢?可能大家都已经想到了,就是做广告。但是这个APP的巧妙之处就在于将产品的广告图片作为用户手机的锁屏图片来呈现,用户滑动开锁一次可以赚取3分钱,滑动进入广告所展示的内容页可赚取6-9分钱。听上去虽然是蝇头小利,但是就是这微乎其微的几分钱不仅大大降低了用户对于广告的反感,而且还为用户带来了可观的收入,到底有多少?下面我来给大家算一笔账。
最近线上产品出现了502错误。一般出现502错误,都是php-fpm 进程处理请求时出现异常导致的。 首先,查看了php-fpm 的进程数。发现php-fpm的进程数已经到达了php-fpm.conf中设置的最大值。最近流量没有特别的变动,这么多php-fpm进程,肯定有问题。
Redis在分布式应用中占据着越来越重要的地位,短短的几万行代码,实现了一个高性能的数据存储服务。最近dump中心的cm8集群出现过几次redis超时的情况,但是查看redis机器的相关内存都没有发现内存不够,或者内存发生交换的情况,查看redis源码之后,发现在某些情况下redis会出现超时的状况,相关细节如下。。。。
目前中文网页主流的编码为gbk和utf8两种编码。因此,我们做编码识别的前提是,编码不是gbk就是utf8. 编码自动识别的基本思想如下。。。。。。
最近项目中用到PHP连接Memcache的场景。这个场景对于PHP开发者很常见。但就是这么常见的一个场景,带来了意想不到的一个问题。
最近在编写后台程序时遇到一个问题。发现后台程序总是莫名其妙的die掉。经排查,发现罪魁祸首是一个echo。
标准I/O函数库提供了popen函数,它启动另外一个进程去执行一个shell命令行。 这里我们称调用popen的进程为父进程,由popen启动的进程称为子进程。 popen函数还创建一个管道用于父子进程间通信。父进程要么从管道读信息,要么向管道写信息,至于是读还是写取决于父进程调用popen时传递的参数。
在linux中使用c语言编程时,errno是个很有用的动动。他可以把最后一次调用c的方法的错误代码保留。但是如果最后一次成功的调用c的方法,errno不会改变。因此,只有在c语言函数返回值异常时,再检测errno。
php中assert本来是用于调试的,如果assert方法内的代码不为true,则给个Warning提醒。如下面的代码。。。
在大公司工作,每天想的是怎么把老板交给自己的事情做到最好,让老板觉得爽,要解决的是“怎么做”的问题。自己创业,没有人会告诉自己该做什么,只能自己告诉自己,所以要解决的是“做什么”的问题。如果拿游戏做类比,前者是剧本已经写好的RPG游戏,跟着剧情走就行,而后者则是个非常开放的策略经营类游戏,一切剧情都得自己编排。
几年前我开始使用vi/vim来支持日常的程序开发工作,使用的原因非常简单,一是因为当时所有的开发和线上都是linux,对于vi的原生支持和轻巧非常有吸引力,二是vi的全键盘操作非常的快捷,熟练之后旁人肯定会觉得酷酷的。而我今年突然对emacs萌生兴趣的原因其实更简单:装逼!vi被称为编辑器之神,而emacs则是神之编辑器,从使用神器的人晋升为神,这是多么高端大气上档次。于是,我怀着各种粗俗卑鄙低劣的想法脑中还不禁浮现几天后我摆出emacs老手的姿态语重心长地对vier说“我年轻的时候也是这么独爱vi“ 边啧啧自笑边开始学习起了emacs。