PHP
依赖管理的迷局:为什么升级依赖总是危险的
Posted by quentin 在 Monday, 20 April 2026每次看到 Dependabot 或 Renovate 提的 PR,我的第一反应不是"好,及时更新",而是"又来了,这次会炸在哪"。
这不是危言耸听。见过太多次:一个看似无害的小版本更新,导致生产环境莫名其妙地挂掉;一个"修复安全漏洞"的补丁,带来了更严重的 breaking change;一个"只是升级 devDependencies"的操作,让 CI 流水线跑不起来。
行业里有个有意思的现象:所有人都在说"依赖要及时更新",但实际操作中,大家都在拖延。不是因为懒,是因为怕。
这种恐惧是有道理的。
语义化版本的美丽谎言
Semantic Versioning(语义化版本)告诉我们:`major.minor.patch`三段式版本号清晰明了,patch 是 bug 修复,minor 是功能新增,major 才是破坏性变更。所以升级 patch 和 minor 是安全的,对吧?
对个屁。
去年金融业务的一次故障,就是因为某个依赖的 minor 版本更新。库的作者认为他只是"优化了内部实现",所以只升了 minor。但这个优化改变了某些边界情况下的行为,恰好触发了我们业务代码里一个隐式依赖的逻辑。
Amazon EC2 配置Ubuntu(HVM) + php-fpm + MySQL
Posted by admin 在 Tuesday, 11 August 2015博客是放在Amazon的EC2.
全程参考:http://imcn.me/html/y2012/11870.html
其中遇到文件权限的问题:
默认EC2的nginx和php-fpm的用户和用户组是www-data。但是我ubuntu的文件权限是quentin,所以php写文件没权限了。
所以为了使php-fpm和文件权限一致,配置如下:
修改php-fpm配置:sudo vi /etc/php5/fpm/pool.d/www.conf
user = www-data 改成 user = ubuntu
修改nginx配置:sudo vi /etc/nginx/nginx.conf
user www-data 改成 user ubuntu
关于二维码
Posted by quentin 在 Tuesday, 28 May 2013什么是二维码:
http://baike.baidu.com/view/132241.htm
使用PHP生成二维码:
http://www.phpernote.com/php-function/638.html
http://hi.baidu.com/ylf575/item/98267014cef49a25f7625c71
在线生成二维码:
http://cli.im/url?run&id=426501
面向对象编程的基本原则
Posted by quentin 在 Tuesday, 28 May 20131、单一职责原则(Single-Resposibility Principle):
对一个类而言,应该仅有一个引起它变化的原因。本原则是我们非常熟悉地"高内聚性原则"的引申,但是通过将"职责"极具创意地定义为"变化的原因",使得本原则极具操作性,尽显大师风范。同时,本原则还揭示了内聚性和耦合生,基本途径就是提高内聚性;如果一个类承担的职责过多,那么这些职责就会相互依赖,一个职责的变化可能会影响另一个职责的履行。其实OOD的实质,就是合理地进行类的职责分配。
2、开放封闭原则(Open-Closed principle):
"软件实体应该是可以扩展的,但是不可修改。"本原则紧紧围绕变化展开,变化来临时,如果不必改动软件实体裁的源代码,就能扩充它的行为,那么这个软件实体设计就是满足开放封闭原则的。如果说我们预测到某种变化,或者某种变化发生了,我们应当创建抽象类来隔离以后发生的同类变化。在Java中,这种抽象是指抽象基类或接口;在C++中,这各抽象是指抽象基类或纯抽象基类。当然,没有对所有情况都贴切的模型,我们必须对软件实体应该面对的变化做出选择。
3、Liskov替换原则(Liskov-Substituion Principle):
页面中实现无刷新上传文件
Posted by quentin 在 Friday, 3 May 2013在web中实现无刷新上传文件有几种方式:
1. 使用HTML5中的FormData和fileReader实现。但是这种方式受限于浏览器。如:IE只适用于IE10。
可参考:http://net.tutsplus.com/tutorials/javascript-ajax/uploading-files-with-ajax/
2. 使用隐藏的iframe提交。
可参考:http://confi.blog.51cto.com/5271328/1174071
最近,在Drupal 7里发现内容类型(content type)为image的字段都可以实现无刷新上传。所以很想知道它是怎么实现的。经过研究发现,其实Drupal7内引入了一个js lib——jquery.form.js。
使用挺简单的:
index.html
Yii备忘
Posted by admin 在 Thursday, 18 April 2013- 检查服务器是否满足需求:
http://hostname/path/to/yii/requirements/index.php
- 使用yiic创建应用:
% cd WebRoot
% php YiiRoot/framework/yiic.php webapp myapp
详情请参见:http://www.yiiframework.com/doc/guide/1.1/zh_cn/quickstart.first-app
安装Eclipse PHP 插件,让已有Eclipse支持PHP
Posted by quentin 在 Thursday, 7 February 2013想拥有支持PHP的eclipse有几种方式,其中一种就是去下载Eclipse IDE for PHP。但是假如你正在用Eclipse For Java的版本做项目呢,你不希望因为要支持PHP而去使用第二个Eclipse,怎么办呢?
这里有个方便的方法:
打开Eclipse -> Help -> Install New Software,在“Work with”后面输入:http://download.eclipse.org/releases/indigo , 然后点”Add” button。然后eclipse去获取可以安装的插件列表(时间可能会有点长)。
列表显示出来时可能比较多,你可以在列表上方输入“ph”过滤下列表。
PHP 手册不能查阅的解决办法
Posted by quentin 在 Thursday, 7 February 2013最近在PHP官网上下载了PHP中英文chm格式手册各一份 (http://www.php.net/download-docs.php),但是下完发现打开只能看到导航,内容却是看不到的。一直以为是下载的chm文件有问题,重复下载,重复出现这样的状况。
后来,我在下载页面看到了这样的提示:
建站会用到的Drupal modules大全
Posted by quentin 在 Wednesday, 21 November 2012转自:http://www.yciydong.com/thread-900-1-1.html
1.为Drupal增加视频播放功能
使用video和flowplayer
http://drupal.org/project/video
http://drupal.org/project/flowplayer
2.为Drupal增加邮件服务器 SMTP和PHPMailer
使用SMTP和phpmailer
http://drupal.org/project/phpmailer
http://drupal.org/project/smtp
3.为Drupal增加高级论坛功能
先启用7.0核心自带的Forum功能,然后安装以下模块(如果没有安装的话)
http://drupal.org/project/advanced_forum
http://drupal.org/project/ctools

